簡體   English   中英

休眠一對多關系Hbm Xml錯誤

[英]Hibernate One To Many Relation Hbm Xml Error

我想通過Hibernate中的外鍵在定義(DEF)和詳細信息(DET)表之間創建關系。 在這種情況下,一個定義具有多個細節。

  • 定義表的ID列為PK
  • 詳細信息表的ID列為PKDEFINITION_IDFK

當我將它們連接到hbm.xml內部時,出現諸如以下錯誤:

錯誤

由以下原因引起:org.hibernate.MappingException:實體的映射中重復的列:com.ykb.hmn.cms.commission.datamodel.ICmsExemptRestrictDet列:ID(應與insert =“ false” update =“ false”映射)

定義HBM XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.ykb.hmn.cms.commission.datamodel.ICmsExemptRestrictDef"
        table="CMS_EXEMPT_RESTRICT_DEF">
        <tuplizer class="com.ykb.hmn.inf.core.datamodel.IntfEntityTuplizer"
            entity-mode="pojo" />
        <id name="oid" type="java.lang.Long">
            <column name="ID" />
            <generator class="sequence">
                <param name="sequence">SEQ_CMS_EXEMPT_RESTRICT_DEF</param>
            </generator>
        </id>

        .
        .
        .

        <bag name="cmsExemptRestrictDetails" table="CMS_EXEMPT_RESTRICT_DET"
            inverse="true" lazy="true" fetch="select">
            <key>
                <column name="DEFINITION_ID" not-null="true" />
            </key>
            <one-to-many
                class="com.ykb.hmn.cms.commission.datamodel.ICmsExemptRestrictDet" />
        </bag>
    </class>
</hibernate-mapping>

詳細HBM XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.ykb.hmn.cms.commission.datamodel.ICmsExemptRestrictDet"
        table="CMS_EXEMPT_RESTRICT_DET">
        <tuplizer class="com.ykb.hmn.inf.core.datamodel.IntfEntityTuplizer"
            entity-mode="pojo" />
        <id name="oid" type="java.lang.Long">
            <column name="ID" />
            <generator class="sequence">
                <param name="sequence">SEQ_CMS_EXEMPT_RESTRICT_DET</param>
            </generator>
        </id>

        <many-to-one name="cmsExemptRestrictDefinition" class="com.ykb.hmn.cms.commission.datamodel.ICmsExemptRestrictDef" fetch="select">
            <column name="ID" not-null="true" />
        </many-to-one>

        <property name="definitionId" type="java.lang.Long">
            <column name="DEFINITION_ID" />
        </property>
    </class>
</hibernate-mapping>

首先-我是否需要在每個hbm xml中定義多對一和一對多關系?

第二-我是否需要將DETAIL_ID之類的重命名列ID重命名?

謝謝。

屬性映射Definition_id不正確。 外鍵不應該被映射。 刪除它,然后將多音映射中的列名更改為definition_id:

將詳細信息hbm xml更改為:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.ykb.hmn.cms.commission.datamodel.ICmsExemptRestrictDet"
        table="CMS_EXEMPT_RESTRICT_DET">
        <tuplizer class="com.ykb.hmn.inf.core.datamodel.IntfEntityTuplizer"
            entity-mode="pojo" />
        <id name="oid" type="java.lang.Long">
            <column name="ID" />
            <generator class="sequence">
                <param name="sequence">SEQ_CMS_EXEMPT_RESTRICT_DET</param>
            </generator>
        </id>

        <many-to-one name="cmsExemptRestrictDefinition" class="com.ykb.hmn.cms.commission.datamodel.ICmsExemptRestrictDef" fetch="select">
            <column name="DEFINITION_ID" not-null="true" />
        </many-to-one>

           </class>
</hibernate-mapping>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM