java - Hibernate继承的策略是什么

标签 java hibernate inheritance annotations

我的 webapp 域由三个实体组成:

  • Person,代表人类主体,包含所有个人数据,例如姓名、电话号码等。
  • 客户供应商:“Person”的子级。它们每个都有特定的属性。

现在我想使用 Hibernate(带有注释)将我的模型映射到带有 customerssuppliers 表的 RDBMS 架构。我不需要通用的 Person 表,我不需要它。

我想要一个包含姓名、...+特定客户字段的客户表和一个包含姓名、姓氏...+特定供应商字段的供应商表。

你觉得这很蠢吗?更好的解决方案是什么?以及如何实现

最佳答案

不,这并不愚蠢,Hibernate 中直接支持它,请参阅:9.1.5. Table per concrete class .

<class name="Person">
    <id name="id" type="long" column="PERSON_ID">
        <generator class="sequence"/>
    </id>
    ...
    <union-subclass name="Customer" table="CUSTOMER">
        ...
    </union-subclass>
    <union-subclass name="Supplier" table="SUPPLIER">
        ...
    </union-subclass>
</class>

在带注释的 JPA 中,您可以编写:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Person {
  ...
}

@Entity
public class Customer extends Person {
  ...
}

@Entity
public class Supplier extends Person {
  ...
}

如果你不需要执行交叉继承查询,例如:“给我所有名为“Smith”的人,无论他们是客户还是供应商<​​/em>”,这个策略非常好.

关于java - Hibernate继承的策略是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9720550/

相关文章:

spring.jpa.properties.javax.persistence.query.timeout 不适用于 PostgreSQL

java - 如何使用修订监听器在审核中设置用户

c# - 类不继承自对象?

javascript - 使用 Babel 扩展 Date 类

java - 使用 Spring Data JPA 的模型库(继承)

java - 如何将指针映射到 JNA 中的结构数组

java - 保存新对象时 Hibernate 未知实体错误

Java - 向上转型和向下转型

java - 连接到瑞典维基百科以提取信息

java - 如何实现 JScrollPane 子行为?