java - 是否可以使用 InheritanceType.SINGLE_TABLE 保存顶级实体?

标签 java hibernate jpa

例如我们有这样的结构:

@Entity
@Table(name = "A")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
public class A{
}

@Entity
@DiscriminatorValue(value = "B")
public class B{

}

在大多数教程中都提到,为了保存实体,我们应该保存 B 实体。

B b = new B();
b.setName("name");
entityManager.persist(b);

保存时是否可以使用Top实体类,而不是子类?像这样的事情:

A a = new A();
a.setName();
a.setType("B");
entityManager.persist(a)

最佳答案

您可以保存任何实体。对于继承,唯一要记住的是,您在 ROOT 表中设置策略,并且不能在子类中覆盖它。

请注意,您也应该在根类型上设置一个 DiscriminatorValue(如果保存该类型的实例)

关于java - 是否可以使用 InheritanceType.SINGLE_TABLE 保存顶级实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31161914/

相关文章:

java - 我正在制作 NLP 应用程序,但模型太大

java - 在 Java 中播放 wavs

java - 使用 JDBC 获取多个结果集不起作用

java - 如何解决从另一个实体 (JPA) 继承的实体的 'no primary key specified'?

java - 如何在不使用语句或 "LAST_INSERTED_ID"的情况下检索最后插入的键

java - 通过 EJB/JPA(Hibernate) 仅传输一次对象

java - 包 androidx.databinding 不存在错误

java - 为什么 ChangeListener 的 getSource() 不返回用于生成事件的类型的预转换对象?

java - 有没有办法在 hibernate 中选择性地将记录加载到惰性集合中?

java - 有一个带有计数子列的 Hibernate 实体 - 没有标量子查询