【问题标题】:how to implement inheritance in hibernate?如何在hibernate中实现继承?
【发布时间】:2010-06-05 06:35:33
【问题描述】:

我有一个实体:

  • BaseEntity --> 其中包含用户登录信息,如 createdBy、createdTime、EditedBy、editedTime
  • Employee --> 其中包含员工信息,如姓名、地址等......
  • RegularEmployee --> 包含工资、奖金等字段 和
  • ContactEmployee --> 其中包含 HourlyRate、contactPeriod 等......

我的继承结构是

在这种情况下如何设计数据库结构,考虑到所有表都有 id 和 version 字段(所有表都应该至少有这两个字段)。

【问题讨论】:

    标签: java hibernate inheritance orm


    【解决方案1】:

    在这种情况下如何设计数据库结构,考虑到所有表都有id和版本字段(所有表都应该至少有这两个字段)。

    如果您希望 所有 表具有 id 版本字段,则必须使用 table per specific class 策略。如果您正在使用注释,请参阅 9.1.5. Table per concrete class2.2.4. Mapping inheritance

    【讨论】:

      【解决方案2】:

      Chapter 9. Inheritance mapping

      我使用了“每个班级的表格”模型。它适用于我正在做的事情。

      鉴别器列告诉hibernate要实例化哪个子类,子类可以有其他子类没有的字段,但是表需要有所有的列(显然某些行为空)。

      【讨论】:

        【解决方案3】:

        'pstanton' 给出的答案是好的并且符合标准.. 但还有另一种方法.. 与您在 Java 中实现继承相同。参考下面的映射为你解答

        <union-subclass name="Employee" extends="BaseEntity" table="tb_emp" >
        </union-subclass>
        
        <class name="BaseEntity" abstract="true">
        </class>
        

        但我觉得,这样你只能实现 1 级继承..

        【讨论】:

          猜你喜欢
          • 2013-07-25
          • 1970-01-01
          • 2015-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-06
          • 2023-03-25
          相关资源
          最近更新 更多