2008-11-04 6 views
7

Zur Zeit habe ich eine Struktur wie folgt aus:Mapping Multi-Level-Vererbung in Hibernate

A 
| 
+--B 
| 
+--C 

Es ist mit einer Tabelle pro Unterklasse zugeordnet ist mit verknüpften Tabellen. Aus historischen Gründen verwende ich auch einen Diskriminator, daher ist die aktuelle Situation wie in Section 9.1.3 of the Hibernate manual beschrieben.

Frage: Wie erweitere ich die Zuordnung für eine Struktur wie folgt aus:

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

Kann ich <subclass> ein <subclass> im Hibernate Mapping? Was brauche ich? <key>?

Antwort

5

nicht getestet aber nach dem Link gepostet Sie, wenn Sie 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> 
+0

scheint zu funktionieren. Vielen Dank! – Henning

0

Mit Annotationen verwenden, es kann getan werden, wie folgt:

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