2012-03-24 102 views
1

我有一個類結構,如:爪哇 - JPA:如何創建一個表中的每個子類,而不是超?

abstract class A { 
    String a; 
} 

class B extends A { 
    String b; 
} 

class C extends A { 
    String c; 
} 

現在我想JPA創建一個表中的每個子類。

enter image description here

我已經看過以前的一些問題,但我很困惑。我如何映射這些類?

+1

看看這個博客帖子:http://uaihebert.com/?p=617 – SHiRKiT 2012-03-24 16:03:42

+0

非常感謝你許多。有什麼辦法只爲子類創建表? – 2012-03-24 16:19:25

回答

5

如果A是因爲映射的繼承爲什麼不標註A類和你不需要單獨的實體,您可以把它定義爲MappedSuperClass。映射超類僅用於繼承映射,您不能查詢它。

在是否需要真正的繼承另一方面 - 根據有關實施 - 你可以去table per (concrete) class繼承策略。對此策略的支持是可選的,因此不保證與所有實現一起工作。它至少支持與新鮮的版本

在你的情況需要的步驟將是再添加以下的A類:@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

+0

我剛剛閱讀了關於MappedSuperClass。謝謝你的答案。 – 2012-03-24 16:35:29

0

與@MappedSuperclass使用表子類或表混凝土類inhertience戰略