插入复合键休眠

时间:2017-09-20 12:25:50

标签: java xml hibernate

我在hibernate中面临类映射问题。 我正在尝试使用复合ID建立多对一关系。 并且映射正在返回

  

实体映射中的重复列:   br.com.is.isenterprise.cre.model.ClienteRegraIcmsMap专栏:EMPRESAID   (应使用insert =“false”update =“false”映射)

但如果我将多对一关系设置为insert =" false "update =" false,则无法在数据库中插入regraIcmsSubistituta的id。 跟随hbm文件。

RegraIcms.hbm.xml

<hibernate-mapping package="br.com.is.isenterprise.efi.model">

    <class name="RegraIcms" table="REGRAICMS">
        <composite-id name="cid" class="br.com.is.isenterprise.efi.model.RegraIcmsId">
            <key-property name="empCod" type="integer" column="EMPCOD"/>
            <key-property name="idRegraIcms" type="integer" column="IDREGRAICMS"/>
        </composite-id>

        <property name="descricao" type="string" column="DESCRICAO" access="field"/>
        <property name="aplicacao" type="integer" column="APLICACAO" access="field"/>   

    </class>

</hibernate-mapping>

ClienteRegraIcmsMapId.hbm.xml

    <class name="ClienteRegraIcmsMap" table="CLIENTEREGRAICMSMAP">
        <composite-id name="cid" class="br.com.is.isenterprise.cre.model.ClienteRegraIcmsMapId">
            <key-many-to-one name="cliente"  column="CLIENTEID" class="br.com.is.isenterprise.cre.model.Cliente" access="field" lazy="false"/>
            <key-many-to-one name="regraIcms" class="br.com.is.isenterprise.efi.model.RegraIcms" access="field" lazy="false">
                <column name="EMPRESAID"/>      
                <column name="REGRAICMSID"/>
            </key-many-to-one>      
        </composite-id>
        <version name="versao" type="integer" column="VERSAO"/>
        <many-to-one name="regraIcmsSubstituta" class="br.com.is.isenterprise.efi.model.RegraIcms" access="field" lazy="false">
            <column name="EMPRESAID"/>      
            <column name="REGRAICMSSUBSTITUTAID"/>
        </many-to-one>
    </class>
</hibernate-mapping>

1 个答案:

答案 0 :(得分:0)

您尝试对两个不同的事物使用相同的列(EMPRESAID),即主键和多对一关系。

那不会起作用(除了可插入=&#34;假&#34;,如你所说)

如果可以在其中一个映射中使用单独的EMPRESAID列。