如何在JPA中混合继承类型



如何在同一继承树中混合单表类型继承与连接表类型?我没有使用hibernate,只是使用JPA。通过阅读JPA规范,我知道没有对混合继承的官方支持。我不能改变结构。它确实与hibernate一起工作,但现在我需要使用openjpa来实现它。我正在寻找一些解决方法。

这是为我工作:

超类:

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE_DISCRIMINATOR")
public class A extends SomeClass implements SomeInteface {

…
@Id
@Column(name = "ID", nullable = false, precision = 0)
public Integer getPk() {
    return super.getPk();
}
…

注意"SomeClass"不是一个实体。

子类- "JOIN"继承:

@Entity
@SecondaryTable(name = "A_SECOND_TABLE", pkJoinColumns = @PrimaryKeyJoinColumn(name ="ID") )
@DiscriminatorValue("BD")
public class B extends A implements SomeIntefaceB {
…

创建一个新表A_SECOND_TABLE,连接在父类主键ID上。不在连接列中但出现在表中的每个字段都标记为:

@Basic
@Column(table = "A_SECOND_TABLE", name = "STATUS", nullable = false, precision = 0)

注意表的值

子类-单表继承:

@Entity
public class C extends A implements SomeIntefaceC {...

单表继承

最新更新