Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate中的多级继承映射_Java_Hibernate_Inheritance_Orm - Fatal编程技术网

Java Hibernate中的多级继承映射

Java Hibernate中的多级继承映射,java,hibernate,inheritance,orm,Java,Hibernate,Inheritance,Orm,目前我有一个这样的结构: A | +--B | +--C A | +--B | | | D | +--C 它使用联接表映射为每个子类一个表。出于历史原因,我还使用了鉴别器,因此当前情况如中所述 问题:如何扩展这种结构的映射: A | +--B | +--C A | +--B | | | D | +--C 我可以在hibernate映射中使用a吗?我需要什么?未测试但是,根据您使用hibernate3时发布的链接 <hibernate-mapping> <cl

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

A
|
+--B
|
+--C
A
|
+--B
|  |
|  D
|
+--C
它使用联接表映射为每个子类一个表。出于历史原因,我还使用了鉴别器,因此当前情况如中所述

问题:如何扩展这种结构的映射:

A
|
+--B
|
+--C
A
|
+--B
|  |
|  D
|
+--C
我可以在hibernate映射中使用
a
吗?我需要什么?

未测试但是,根据您使用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>

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

@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{}