Hallo Hibernate-Experten,
ich tüftel hier schon ein paar Tage an einem Mapping für Hibernate 3.1 und hab auch in Foren, FAQ usw. nichts gefunden, daher meine Bitte um Hilfe...
Eigentlich ist es eine ganz einfache 1:n Beziehung aus einem Legacy-Schema zweichen zwei Tabellen, die ich hier mal PARENT und CHILD nenne. Auf diese Tabellen will ich nur lesend zugreifen, die Parent-Klasse soll eine Liste mit Child-Instanzen enthalten.
Die Widrigkeiten an der Sache sind folgende (das Schema gehört zu einem Fremdprodukt auf das ich keinen Einfluss habe -> don't blame me):
1. Die PARENT-Tabelle hat einen Compound-Primary-Key aus zwei anderen Attributen (KEY1, KEY2)
2. Verknüpft wird über eine andere Spalte "trncode", die in beiden Tabellen als normale Spalte vorhanden ist
3. "trncode" ist in der Parent-Tabelle nicht unique (das spielt aber keine Rolle, da ich nur vom Parent kommend navigieren will, zudem read-only)
Mein Mapping sieht etwa so aus:
Code:
<hibernate-mapping>
<class table="PARENT" name="foo.Parent">
<composite-id>
<key-property name="key1" access="field" column="KEY1"/>
<key-property name="key2" access="field" column="KEY2"/>
</composite-id>
<property name="trnCode" access="field" column="TRNCODE"/>
<property name="parentInfo" access="field" column="PAR_INF"/>
...
<map name="childs" table="CHILD">
<key column="trncode"/>
<map-key type="string" column="trncode"/>
<composite-element class="foo.Child">
<property name="childInfo" access="field" column="CHILD_INF"/>
...
</composite-element>
</map>
</class>
</hibernate-mapping>
Beim Ausführen bekomme ich folgenden Fehler:
Code:
org.hibernate.MappingException: Foreign key (FK9D18367CBF36D4AA:CHILD [trncode])) must have same number of columns as the referenced primary key (PARENT [KEY1,KEY2])
Ähnliche Ergebnisse hatte ich auch, als ich CHILD als Entity (statt als Component) gemappt habe.
Momentan hab ich das so gelöst, dass ich die Relation gar nicht mappe sondern im Code manuell nachlade, aber das muss doch besser gehen...
Ich bin für jede Hilfe dankbar!
zott
PS: Hibernate 3.1, Oracle 9