2013-06-03 60 views
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] 

回答

0

好吧,我得到了這個工作。

我使用的屬性標籤,我不得不添加一個唯一的鍵到表!

相關問題