2008-11-04 14 views
7

Obecnie mam struktura tak:Mapowanie wielopoziomowe dziedziczenie w Hibernate

A 
| 
+--B 
| 
+--C 

To odwzorowane z jednej tabeli na podklasy przy użyciu połączonych tabel. Z przyczyn historycznych używam także dyskryminatora, więc obecna sytuacja jest taka, jak opisana w Section 9.1.3 of the Hibernate manual.

Pytanie: Jak mogę przedłużyć mapowanie dla struktury takie jak to:

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

mogę <subclass><subclass> w mapowaniu hibernacji? Co potrzebuję <key>?

Odpowiedz

5

nie testowano ale według linku pisał jeśli używasz 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

wydaje się działać. Dziękuję Ci bardzo! – Henning

0

Korzystanie adnotacje, można to zrobić w następujący sposób:

@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{} 
Powiązane problemy