我有一个类似的类结构:
abstract class A {
String a;
}
class B extends A {
String b;
}
class C extends A {
String c;
}
现在,我希望JPA为每个子类创建一个表。
我之前看过一些问题,但感到困惑。如何映射这些类?
最佳答案
如果A是由于映射而继承的,并且您不需要单独的实体,则可以将其定义为MappedSuperClass。映射的超类仅用于继承映射,不能查询它。
另一方面,如果需要真正的继承(取决于实现),则可以采用table per (concrete) class继承策略。对这种策略的支持是可选的,因此不能保证可以与所有实现一起使用。至少新版本的软件支持该功能
Hibernate
DataNucleus
OpenJPA
EclipseLink。
在您的情况下,需要执行的步骤将是在A类中添加以下内容:@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)