【发布时间】:2013-04-22 01:45:41
【问题描述】:
我有两个具有一对一关系的复合 id 表。
表一:PK 列:column1,column2 表二:PK列:column3,column4。
列具有不同的名称。我必须将 column1 映射到 column3 并将 column2 映射到 column4。 Table1(父表)声明:
<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>
Table2(子表)映射
<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)
如何在这种情况下在映射文件中给予一对一的关联。
问候, 纳雷什。
【问题讨论】:
-
您能否展示其他映射细节,例如您如何映射复合 ID?
-
根据问题
LNBCPRODHDRP0具有键列名称BC_BANK_ID, BC_BRANCH_ID, BC_PRODUCT_NBR但在您的情况下LNBCPRODHDRP0_pk指的是LC_BANK_ID, LC_BRANCH_ID, LC_PRODUCT_NBR另外请编辑原始问题以添加此信息。不要在 cmets 中给出代码。 -
@rahul maindargi,我已经编辑了我的问题。你能检查一下吗
-
你使用的是哪个版本的休眠?
-
@Rahul,我使用的是休眠 3.3
标签: hibernate one-to-one composite-primary-key