2009-08-06 10 views
6

Ho una classe A che ha un set di B. Tuttavia, questi due oggetti sono collegati da campi che NON sono la chiave primaria.Hibernate uno a molti usando qualcosa di diverso da una chiave primaria

Per B, è possibile utilizzare <key column>, ma come si specifica che il join deve essere in A. secondary_column? Non 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

Non credo Hibernate ti consente di fare quello che vuoi. – skaffman

+0

Hibernate NON DEVI assolutamente farlo. Questo puzza di cattivo design del database. Che problema stai cercando di risolvere qui? –

+1

Sto cercando di risolvere il cattivo design del database ... è un database legacy di oltre 10 anni :) Lo odio, mi perseguita. Spero di riuscire a convincere managemnt a cambiarlo in qualcosa di più OO amichevole. –

risposta

4

risolto con

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