我有一个类似的类结构:

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)

07-28 13:36