【问题标题】:Java/Hibernate JPA: InheritanceType.TABLE_PER_CLASS and IDsJava/Hibernate JPA:InheritanceType.TABLE_PER_CLASS 和 ID
【发布时间】:2011-03-10 10:31:58
【问题描述】:

我正在使用 Hibernate JPA。

假设我有这些课程:

AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer

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

我正在使用 InheritanceType.TABLE_PER_CLASS。

【问题讨论】:

  • 在至少一个具体的类中,我希望拥有独立于“共享”ID 的自动增量编号,例如客户编号。这是针对大学作业的,因此欢迎就为什么这可能是一个坏主意提出意见。 :P
  • 映射超类继承是可能的。

标签: java hibernate jpa table-per-class


【解决方案1】:

来自 Hibernate Annotations 参考指南:

2.2.4.1. Table per class

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

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

此策略支持一对多 协会,只要他们是 双向的。 这个策略确实 不支持IDENTITY 生成器 策略:id必须共享 跨越几张桌子。所以, 使用此策略时,您应该 不要使用AUTOIDENTITY

所以恐怕不支持你想要的(我建议使用GenerationType.TABLE)。

【讨论】:

  • 啊,谢谢。然后我必须自己生成客户编号。
猜你喜欢
  • 2014-05-24
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 2016-07-16
  • 2013-12-10
  • 1970-01-01
  • 2022-10-17
  • 2015-12-19
相关资源
最近更新 更多