2008-11-04 39 views
7

Actualmente tengo una estructura como esta:Mapeo herencia de varios niveles en Hibernate

A 
| 
+--B 
| 
+--C 

la que está asignada a una tabla por subclase utilizando tablas combinadas. Por razones históricas, también uso un discriminador, por lo que la situación actual es la descrita en Section 9.1.3 of the Hibernate manual.

Pregunta: ¿Cómo extender la asignación para una estructura como esta:

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

¿Puedo <subclass> un <subclass> en el mapeo de hibernación? ¿Qué <key> s necesito?

Respuesta

5

no probados pero, según el enlace informados si está utilizando 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

parece funcionar. ¡Muchas gracias! – Henning

0

con Comentarios, se puede hacer de la siguiente manera:

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