5

Tôi cần ánh xạ một lớp đơn thành hai bảng (cả hai có nhiều cột khóa chính). Giả sử TABLE1 có id1, id2, id3 và TABLE2 có id1, id2 là các khóa chính. Bây giờ khi viết các tập tin bản đồ tôi sẽ làm một cái gì đó như sau:Làm cách nào để tham gia trên hai cột trong tệp ánh xạ ngủ đông bằng cách sử dụng thẻ <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> 

Như bạn có thể nhìn thấy join thẻ chỉ chấp nhận một thẻ chìa khóa! Làm cách nào để ánh xạ id thứ hai?

Kind Regards,
bạo chúa
PS: Giáng sinh vui vẻ và một hạnh phúc và năng suất năm mới;)

Trả lời

2

<key> có thể chứa nhiều <column> yếu tố:

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

Hi axtavt, tôi theo hướng dẫn của bạn và điều này giải quyết được vấn đề với tính đa dạng, nhưng một ngoại lệ khác xảy ra vì tôi có hai id trong TABLE2 (id1, id2): "org.hibernate.MappingException: Khóa ngoại (FK: TABLE2 [id1, id2])) phải có cùng số r của các cột là khóa chính được tham chiếu (TABLE1 [id3]) ". – despot

+1

Tôi đã thử cung cấp cột giả như được mô tả tại đây https://forum.hibernate.org/viewtopic.php?p=2229088&sid=a709d63dc318557b72b76366b8d7b804 (), nhưng tôi nhận được: "org.hibernate.MappingException: Khóa ngoại (FK: TABLE2 [id1, id2, id3])) phải có cùng số cột như khóa chính được tham chiếu (TABLE1 [id3])". Bất kì lời đề nghị nào? – despot

+0

@despot Xin chào, đã lâu rồi, bạn đã giải quyết được vấn đề này chưa? Nếu vậy, bạn có thể vui lòng nói như thế nào? Chỉ gặp rắc rối tương tự ngay bây giờ :) –

Các vấn đề liên quan