2009-08-06 7 views
6

Tengo una clase A que tiene un conjunto de B. Sin embargo, estos dos objetos están vinculados por campos que NO son la clave principal.Hibernar uno a muchos utilizando algo distinto de una clave principal

Para B, puedo usar <key column>, pero cómo especifico que la unión debe estar en A. secondary_column? No A. table_primary_key_id?

<class table="a"> 
    <id column="table_primary_key_id"> 
    </id> 
    <property column="secondary_column" /> 

    <set table="B" lazy="false" > 
     <key column="B_not_primary" /> 
     <one-to-many class="BClass" /> 
    </set> 
</class>  
+1

No creo que Hibernate le permitirá hacer lo que quiere. – skaffman

+0

Hibernate realmente NO DEBE permitirte hacer esto. Esto apesta a un mal diseño de la base de datos. ¿Qué problema estás tratando de resolver aquí? –

+1

Estoy tratando de resolver el mal diseño de la base de datos ... es una base de datos heredada de más de 10 años :) Lo odio, me atormenta. Con suerte, convenceré a managemnt para que lo cambie a algo más amigable con OO. –

Respuesta

4

resuelve con

<set name="someSet" table="B" lazy="false"> 
    <key column="B_not_primary" property-ref="secondary_column" /> 
    <one-to-many class="BClass" /> 
</set> 
Cuestiones relacionadas