代码之家  ›  专栏  ›  技术社区  ›  Henning

Hibernate中的多级继承映射

  •  7
  • Henning  · 技术社区  · 16 年前

    目前我有一个这样的结构:

    A
    |
    +--B
    |
    +--C
    

    Section 9.1.3 of the Hibernate manual .

    问题: 如何扩展这样一个结构的映射:

    A
    |
    +--B
    |  |
    |  D
    |
    +--C
    

    <subclass> A. < <key>

    2 回复  |  直到 16 年前
        1
  •  6
  •   shyam    16 年前

    未试验过 但是,根据你发布的链接,如果你使用的是hibernate3

    <hibernate-mapping>
      <class name="A" table="A">
        <id name="id" type="long" column="a_id">
          <generator class="native"/>
        </id>
        <discriminator column="discriminator_col" type="string"/>
        <property name="" type=""/>
        <!-- ... -->
      </class>
      <subclass name="B" extends="A" discriminator-value="B">
        <!-- ... -->
      </subclass>
      <subclass name="D" extends="B" discriminator-value="D">
        <!-- ... -->
      </subclass>
      <subclass name="C" extends="A" discriminator-value="C">
        <!-- ... -->
      </subclass>
    </hibernate-mapping>
    
        2
  •  0
  •   KayV    7 年前

    使用注释,可以按如下方式完成:

    @Entity
    @Inheritance(strategy = InheritanceType.JOINED)
    @DiscriminatorColumn(name="LoanType",discriminatorType="String")
    @Table(name = "A")
    public class A implements Serializable{
    }
    
    @Entity
    @Table(name= "B")
    @PrimaryKeyJoinColumn(name = "B_ID", referencedColumnName ="A_ID")
    public class B extends A{
    }
    
    
    @Entity
    @Table(name= "C")
    @PrimaryKeyJoinColumn(name = "C_ID", referencedColumnName = "B_ID")
    public class C extends B{}