【问题标题】:Table per subclass mapping strategy: switching tables?每个子类的表映射策略:切换表?
【发布时间】:2014-12-16 04:44:28
【问题描述】:

在每个具体子类设置的表中,是否可以将行/对象从一个表切换到另一个表?这将如何运作?

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

现在假设一名警察成为一名消防员,或者反过来,这将如何运作?这可以在休眠状态下工作吗?有什么例子吗?

【问题讨论】:

    标签: java hibernate jpa orm


    【解决方案1】:

    不同表中的所有公共行必须相同。在该策略中,您必须复制行。我发现的唯一有趣的插图是在The Java Geek

    根据Java EE 6 tutorial,此策略的支持是可选的(他们说在 Glassfish 中不可用)。

    对多态性的支持很差,因此您的用例不会得到适当的满足:您必须先将警察从警察中移除,然后才能创建一个全新的消防员。

    如果您想在不同实体之间的不同行之间切换,我猜您将无法通过其他策略找到您要查找的内容:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 2012-11-03
      • 2015-11-11
      相关资源
      最近更新 更多