java - 对子类使用 JPA 2.0 @Inheritance 注释是否有意义?

标签 java persistence jpa-2.0

我想知道用 @Inheritance 注释层次结构的每个类是否有意义(或者即使它是正确的)。例如,假设我们有以下简单的层次结构:

public class A { ... }
public class B extends A { ... }
public class C extends A { ... }

为了持久化这些类的对象,我们将类 A 注释如下:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class A { ... }

我的问题是,我们是否还需要向 B 类和 C 类添加 @Inheritance 注解?正如 Javadoc 所说“它是在作为实体类层次结构的根的实体类上指定的。”所以我可能的答案是,不!但如果我们对它们进行注释,这有任何意义吗,还是完全被忽略了?

谢谢

最佳答案

如果需要使用非默认的InheritanceType,则需要在子类中添加@Inheritance注解。

如您所知,支持 3 种继承类型。每个类层次结构表、每个子类表和每个具体类表。 默认情况下使用 InheritanceType.SINGLE_TABLE,所有父类和子类对象都将放置在一张表中。

如果要使用InheritanceType.JOINED或InheritanceType.TABLE_PER_CLASS,则需要添加@Inheritance注解。

关于java - 对子类使用 JPA 2.0 @Inheritance 注释是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173007/

相关文章:

java - 如何检查一个数组是否在另一个数组中?

database - 持久化来自 Apache Storm 的数据,任何框架?

java - 如何将不同方案的两个事务合并为一个?

java - JPA - 注入(inject)或实例化自定义属性/对象以进行 JSF 写访问?

hibernate - JPA 2.0/hibernate : No supertype found

jpa-2.0 - JPA 未将属性映射到 DB 中的列

java - 在当前线程中找不到 OpenGL 上下文,如何修复此错误?

java - 是否需要文件 persistence.xml?

java - 反序列化 JSON 时为类创建指定附加参数

swift - 使用 @dynamicMemberLookup 访问 AnyCodable 值