0
問題摘要多到一個W /複合鍵 - 外國密鑰必須具有相同的列數,因爲他引用PK
我試圖映射多到一個具有複合鍵。到目前爲止,我還沒有找到其他有幫助的問題。我知道如何映射到一對一的複合鍵,但它不允許我映射多對一。
下面你會看到bhrvJournalDAO有一個store_nbr列,它映射到transAcctgBuTxtDAO acctg_bu_id。我怎樣才能擊中組合鍵,並告訴它只使用acctgBuId?我沒有國家代碼(這是組合鍵的第二部分)。
從這裏
<hibernate-mapping>
<class name="com.acctg.BhrvJournalDAO" table="transpo_acctg:bhrv_journal">
<id name="jeId" column="je_id">
<generator class="native"/>
</id>
<property name="bhrvInvoiceId" column="bhrv_invoice_id"/>
<property name="storeNbr" column="store_nbr"/>
<property name="loadId" column="load_id"/>
<many-to-one name="transAcctgBuTxt" class="TransAcctgBuTxtDAO" insert="false" update="false" cascade="all">
<column name="store_nbr"></column>
</many-to-one>
</class>
爲了這裏
<hibernate-mapping>
<class name="TransAcctgBuTxtDAO" table="transpo_acctg:trans_acctg_bu_txt">
<composite-id name="transAcctgBuTxtPKDAO" class="TransAcctgBuTxtPKDAO">
<key-property name="acctgBuId" column="acctg_bu_id"/>
<key-property name="languageCode" column="language_code"/>
</composite-id>
<property name="acctgBuAbbr" type="java.lang.String">
<column name="acctg_bu_abbr" />
</property>
<property name="acctgBuDesc" type="java.lang.String">
<column name="acctg_bu_desc" />
</property>
<many-to-one name="transAcctgBuDAO" class="TransAcctgBuDAO" not-null="false"
insert="false" update="false" not-found="ignore" fetch="select">
<column name="acctg_bu_id" />
</many-to-one>
</class>
映射
<many-to-one name="transAcctgBuTxt" class="TransAcctgBuTxtDAO"
insert="false" update="false" cascade="all">
<column name="store_nbr"></column>
</many-to-one>
複合鍵示例
<one-to-one name="transAcctgBuTxt" class="TransAcctgBuTxtDAO" property-
ref="transAcctgBuTxtPKDAO.acctgBuId">
<column name = "store_nbr">
</one-to-one>
錯誤
Foreign key (FK47A121BB6617227C:transpo_acct:bhrv_journal [store_nbr]))
must have same number of columns as the referenced primary
key (transpo_acct:trans_acctg_bu_txt [acctg_bu_id,language_code])
預先感謝
@Chin_Hung。這就是我所擔心的。不幸的是,它是一個引用了拒絕表的表格(我們存儲了在BhrvJournal中使用的鍵的定義列表)。我最終只是使用另一個查詢來獲取我需要的。不是最好的方法,但你確認它不適用於我的設置。謝謝你的時間 – zach