0
我知道那裏應該有一個PK和一個FK來正常關聯兩個表,但我處於一種我無法控制遺留系統架構的情況。
沒有任何外鍵的一對多關聯
我的問題是我想在我的xxx.hbm.xml中有一對多的關係,但是沒有任何FK關聯。但遺留代碼「依賴」一組兩列,這些列未被聲明爲組合PK或FK。
PaymentDelivery是一方,PaymentItemDelivery是多方面。
我paymentDelivery.hbm.xml(一側)
<bag
name="paymentItemDelivery"
fetch="join"
lazy="false"
>
<key>
<column name="payment_id"></column>
<column name="delivery_num"></column>
</key>
<one-to-many
class="kr.co.sgis.services.web.mobile.payment.form.PaymentItemDelivery"
/>
</bag>
等方式嘗試這種 ,但它給了我這樣的錯誤 列數必須匹配FK的或者我已經錯誤的FK列數量。 「但是我告訴你Hibernate,它們不是FK!」
我也試過使用屬性標籤,但沒有任何運氣。使用屬性標籤給了我「集合元素映射列數錯誤」的錯誤。
上述協會,通過使用註釋有可能像
JoinColumns
如何做相同的XML?
我也試過這個 在paymentDelivery.hbm.xml(單面)
<bag
name="paymentItemDelivery"
fetch="join"
lazy="false"
>
<key property-ref="logicalPaymentItemDeliveryAccosiation">
</key>
<one-to-many
class="kr.co.sgis.services.web.mobile.payment.form.PaymentItemDelivery"
/>
</bag>
<properties
insert="false"
unique="false"
update="false"
name="logicalPaymentItemDeliveryAccosiation">
<property
name="payment_id"
column="PAYMENT_ID"
insert="false"
unique="false"
update="false">
</property>
<property
name="delivery_num"
column="DELIVERY_NUM"
insert="false"
unique="false"
update="false">
</property>
</properties>
和paymentItemDelivery.hbm.xml(多側面地)
<properties
insert="false"
unique="false"
update="false"
name="logicalPaymentItemDeliveryAccosiation">
<property
name="payment_id"
column="PAYMENT_ID"
insert="false"
unique="false"
update="false">
</property>
<property
name="delivery_num"
column="DELIVERY_NUM"
insert="false"
unique="false"
update="false">
</property>
</properties>
它拋出
collection foreign key mapping has wrong number of columns:
kr.co.sgis.services.web.mobile.payment.form.PaymentDelivery.paymentItemDelivery
type: component[payment_id,delivery_num]