Java / Hibernate JPA:InheritanceType.TABLE_PER_CLASS和ID

时间:2010-07-01 01:57:35

标签: java hibernate jpa table-per-class

我正在使用Hibernate JPA。

假设我有这些课程:

AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer

有没有办法让具体类具有独立的ID?

我正在使用InheritanceType.TABLE_PER_CLASS。

1 个答案:

答案 0 :(得分:8)

来自Hibernate Annotations参考指南:

  

2.2.4.1. Table per class

     

这种策略有许多缺点(尤其是   多态查询和   协会)在JPA中解释   spec,Hibernate参考   文档,Hibernate in Action,   和许多其他地方。 Hibernate的工作   他们中的大多数人实施这一点   使用SQL UNION查询的策略。它   通常用于顶级   继承层次结构:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Flight implements Serializable { ... } 
     

此策略支持一对多   协会规定他们是   双向的。 这个策略确实如此   不支持IDENTITY生成器   策略:必须共享id   跨几个表。所以,   在使用这种策略时,你应该这样做   不要使用AUTOIDENTITY

所以我担心你不想要的东西(我建议使用GenerationType.TABLE)。