2008-11-04 2 views
7

В настоящее время у меня есть структура, как это:Отображение наследования многоуровневые в Hibernate

A 
| 
+--B 
| 
+--C 

Это отображается с одной таблицы в подклассе с использованием объединения таблиц. По историческим причинам я также использую дискриминатор, поэтому текущая ситуация описана в Section 9.1.3 of the Hibernate manual.

Вопрос: Как продлить отображение для структуры, как это:

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

Могу ли я <subclass><subclass> в отображении спящего режима? Что мне нужно <key>?

ответ

5

не тестировалось но, по ссылке, которую вы в курсе, если вы используете 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

Кажется, работает. Большое спасибо! – Henning 2008-11-05 09:10:53

0

Использование аннотаций, это может быть сделано следующим образом:

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