2009-08-06 13 views
6

Ich habe eine Klasse A, die eine Reihe von B hat. Diese beiden Objekte sind jedoch durch Felder verbunden, die NICHT der Primärschlüssel sind.Ruhezustand eins zu viele mit etwas anderes als einem Primärschlüssel

Für B kann ich <key column> verwenden, aber wie gebe ich an, dass der Join in A sein sollte. secondary_column? Nicht 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

ich Hibernate nicht denken, können Sie tun, was Sie wollen. – skaffman

+0

Hibernate sollte wirklich nicht lassen Sie dies tun. Dies riecht nach schlechtem Datenbankdesign. Welches Problem versuchen Sie hier zu lösen? –

+1

Ich versuche ein schlechtes Datenbankdesign zu lösen ... es ist eine 10+ Jahre alte Datenbank :) Ich hasse es, es verfolgt mich. Hoffentlich werde ich das Management davon überzeugen, es zu etwas mehr OO-freundlichem zu ändern. –

Antwort

4

Gelöst mit

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