0
我會用一個人爲的例子來說明我的問題,儘量保持它儘可能簡單和容易。然而,我真正的問題是在遺留代碼中,所以我不能更改模式或類似的東西。休眠表每類和設置映射
我在我的代碼中有每個類hiarachy的表。可以說Customer1和Customer2。它們具有唯一的鑑別器值(分別爲1和2)。每個客戶可能有0個或更多的地址。地址存儲在一個表中。該表存儲對客戶ID和客戶鑑別器值的引用。在地址映射中我有:
<any name="customer" meta-type="CustomerMetaType" id-type="long">
<column name="customerid" not-null="true" />
<column name="discriminator" not-null="true" />
</any>
這很好。然而,在我的customer1表和映射的customer2我:
<set name="addresses" outer-join="false">
<key column="customerid"/>
<one-to-many class="Address"/>
</set>
這樣做的問題是ID爲1加載customer1表將拿起的customer2任何地址與ID 2.我在一個固定的初始嘗試是添加多個鍵設定:
<key>
<column name="customerid"/>
<column name="discriminator"/>
</key>
但是這樣做,我得到以下異常時:
org.hibernate.MappingException:外鍵必須有相同數量的引用的主鍵列)
有沒有人有解決這個問題。有沒有一種將描述符映射爲類的方法,如某種虛擬組合鍵?還是有什麼我可以做的設置映射限制到特定的客戶表?
完美,謝謝! – samblake