java - 如何在JPA中混合继承类型

标签 java jpa jakarta-ee openjpa jpa-2.1

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

最佳答案

这对我有用:

父类(super class):

@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”,并在父类(super class)主键“ID”上进行联接。 不在连接列中但出现在表中的每个字段都标记如下:

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

注意表值。

子类-单表继承:

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

简单的单表继承。

关于java - 如何在JPA中混合继承类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40679517/

相关文章:

java - 如何用jsp和java从其他网站获取内容???

java - 从对象向下转换为整数运行时错误: java. lang.ClassCastException

java - 实现相同接口(interface)的 DTO 和实体

java - 如何使用 Spring、Hibernate、EntityManager 和 JPA 连接到 mysql 数据库

java - 如何在 Hibernate 中放置自定义类型

JavaEE6+REST : How do I get all REST resources at runtime?

java - 是否可以从普通的java文件中禁用tomcat缓存

java - 将输出文件重定向到 maven 中的目录

java - 在java中打印一个变量n次

java - 与 SINGLE_TABLE 继承的子类的关系