表每子类映射策略:切换表?

时间:2014-12-16 04:44:29

标签: java hibernate jpa orm

在每个具体子类设置的表中,是否可以将行/对象从一个表切换到另一个表?这会怎么样?

例如,我们有一个带有pk person_id的基类Person.java。 然后我们有两个子类Police.java和Firefighter.java这两个子类都由相应的表PERSON和FIREFIGHTER再次映射到主键person_id。

现在假设警察成为消防员或副驾驶员,这将如何运作?这可以在休眠状态下工作吗?有什么例子吗?

1 个答案:

答案 0 :(得分:0)

所有常见行必须在不同的表中相同。在该策略中,您必须复制行。我找到的唯一有趣的插图是The Java Geek

根据Java EE 6 tutorial,这种策略的支持是可选的(他们说,Glassfish不提供)。

多态性支持不足,因此您的使用案例将无法得到满足:在创建一名全新的消防员之前,您必须将警察从警察中移除。

如果你想在不同的实体之间切换不同的行,我想你不会找到你正在寻找的另一种策略:

  • 在已加入的子类策略中,所有公共字段都必须映射到基表
  • 在每个类层次结构策略的单个表中(指定不佳),您将所有数据都放在带有鉴别器列的单个表中