我有兩個具有一對一關係的複合ID的表。表一:PK列:column1,column2 表二:PK列:column3,column4。當關鍵名稱不同時休眠一對一關聯
列有不同的名稱。我必須將column1映射到column3,將column2映射到column4。 表1(父表)聲明:
<class name="com.java.TABLE1" table="TABLE1">
<composite-id name="TABLE1_pk" class="com.tc4.dal.TABLE1_PK">
<key-property name="COLUMN1" column="COLUMN1" />
<key-property name="COLUMN2" column="COLUMN3" />
</composite-id>
...remaining properties declarations...
<one-to-one name="TABLE2" class="com.tc4.dal.TABLE2"
cascade="save-update, delete">
<key column="COLUMN3" property-ref="COLUMN1" />
<key column="COLUMN4" property-ref="COLUMN2" />
</one-to-one>
</class>
表2(子表)映射
<class name="com.java.TABLE2" table="TABLE2">
<composite-id name="TABLE2_pk" class="com.tc4.dal.TABLE2_PK">
<key-property name="COLUMN3" column="COLUMN3" />
<key-property name="COLUMN4" column="COLUMN4" />
</composite-id>
</class>
,同時啓動應用程序,獲得以下異常
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/JAVA/TABLE1.hbm.xml
Caused by: org.xml.sax.SAXParseException: The content of element type "one-to-one" must match "(meta*,formula*)".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196)
at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:132)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:390)
如何給予一對一的關聯在這種情況下映射文件。
Regards, Naresh。
你可以向其他映射詳細資料,如你是如何映射的複合ID?與
2013-04-28 08:23:54
根據問題'LNBCPRODHDRP0'具有鍵列名稱'BC_BANK_ID,BC_BRANCH_ID,BC_PRODUCT_NBR',但在您的情況下'LNBCPRODHDRP0_pk'指的是'LC_BANK_ID,LC_BRANCH_ID,LC_PRODUCT_NBR'也請編輯原始問題以添加此信息。不要在評論中提供代碼。 – 2013-04-28 08:59:26
@ rahul maindargi,我編輯了我的問題。你能否檢查 – 2013-04-29 04:58:24