Java - JPA:如何为每个子类创建一个表,而不是为超类创建一个表?

Olc*_*taş 1 java inheritance abstract-class jpa subclass

我有一个类结构,如:

abstract class A {
    String a;
}

class B extends A {
    String b;
}

class C extends A {
    String c;
}
Run Code Online (Sandbox Code Playgroud)

现在我希望JPA为每个子类创建一个表.

在此输入图像描述

我看过一些以前的问题,但我很困惑.我该如何映射这些类?

Mik*_*unu 5

如果A由于映射而继承,并且您不需要单独的实体,则可以将其定义为MappedSuperClass.映射的超类仅用于继承映射,您无法查询它.

另一方面,如果需要真正的继承 - 取决于实现 - 你可以使用table per(具体)类继承策略.对此策略的支持是可选的,因此不保证可以与所有实现一起使用.它至少得到了新版本的支持

在您需要的情况下,然后将步骤添加到A类: @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)