5

Potrzebuję odwzorować pojedynczą klasę na dwie tabele (obie z kluczem podstawowym wielu kolumn). Powiedzmy, że TABLE1 ma id1, id2, id3 i TABLE2 ma id1, id2 jako klucze podstawowe. Teraz pisząc plik odwzorowania chciałbym zrobić coś jak następuje:Jak dołączyć do dwóch kolumn w pliku odwzorowania hibernacji za pomocą znacznika <join>?

<hibernate-mapping package="beans"> 
    <class name="TABLE1Class" table="TABLE1"> 
    <composite-id name="table1PK" class="TABLE1PKClass"> 
     <key-many-to-one name="id1" class="ID1Class" column="id1"/> 
     <key-many-to-one name="id2" class="ID2Class" column="id2"/> 
     <key-many-to-one name="id3" class="ID3Class" column="id3"/> 
    </composite-id> 
    <property name="someProperty" type="integer" not-null="true" column="x"/> 
    <join table="TABLE2"> 
     <key column="id1" /> 
     <!-- <key column="id2"/> The join tag accepts only one key tag!!! 
How do I map the second key??? --> 
     <property name="propertyFromTable2" type="float" not-null="true"/> 
    </join> 
    </class> 
</hibernate-mapping> 

Jak widać łączenia tag akceptuje tylko jeden znacznik klucza! Jak zamapować drugi identyfikator?

poważaniem,
Despot
PS: Wesołych Świąt i Szczęśliwego i produktywne Nowy Rok;)

Odpowiedz

2

<key> może zawierać wiele <column> elementy:

<key> 
    <column name = "id1" /> 
    <column name = "id2" /> 
    <column name = "id3" /> 
</key> 
+1

Hi axtavt, ja po instrukcji i to rozwiązało problem z krotnością, ale wystąpił inny wyjątek, ponieważ mam dwa identyfikatory w TABLE2 (id1, id2): "org.hibernate.MappingException: klucz obcy (FK: TABLE2 [id1, id2])) musi mieć te same numery r kolumn jako odniesiony klucz podstawowy (TABELA1 [id3]) ". – despot

+1

Próbowałem dostarczanie kolumny typu dummy, jak opisano tutaj https://forum.hibernate.org/viewtopic.php?p=2229088&sid=a709d63dc318557b72b76366b8d7b804 (), ale otrzymałem: "org.hibernate.MappingException: klucz obcy (FK: TABLE2 [id1, id2, id3])) musi mieć taką samą liczbę kolumn, jak odwoływany klucz podstawowy (TABELA1 [id3])". Jakieś sugestie? – despot

+0

@despot Cześć, minęło dużo czasu, czy rozwiązałeś ten problem? Jeśli tak, czy możesz powiedzieć, w jaki sposób? Mając takie same problemy teraz :) –

Powiązane problemy