我有一个类结构:
abstract class A {
String a;
}
class B extends A {
String b;
}
class C extends A {
String c;
}
现在我希望JPA为每个子类创建一个表。
我看过以前的一些问题,但我很困惑。我该如何映射这些类?
答案 0 :(得分:5)
如果A由于映射而继承,并且您不需要单独的实体,则可以将其定义为MappedSuperClass。映射的超类仅用于继承映射,您无法查询它。
另一方面,如果需要真正的继承 - 取决于实现 - 你可以选择table per (concrete) class继承策略。对此策略的支持是可选的,因此不保证可以与所有实现一起使用。它至少得到了
的新版本的支持在您需要的情况下,需要在步骤A中添加以下内容:@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
答案 1 :(得分:0)
为什么不使用@MappedSuperClass注释A类使用Table子类或Table for Concrete Class inhertience strategy