【发布时间】:2017-09-06 05:26:41
【问题描述】:
我目前正在处理一对多的休眠 xml 映射。我想将记录插入两个表(MERCHANT_INFO、MERCHANT_SERVICE)。不更新条目。尽管我在 daoImpl 类中使用如下保存,
getHibernateTemplate().save(objMerchantInfoEntity);
Hibernate 正在生成一些更新语句,如下所示
Hibernate: insert into MERCHANT_INFO (MID,...) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update MERCHANT_SERVICE set TXN_MIN=?, TXN_MAX=?, POS_ID=?, STATUS=?, UPDATED_BY=? where SERVICE_CODE=? and MID=?
Hibernate: update MERCHANT_SERVICE set TXN_MIN=?, TXN_MAX=?, POS_ID=?, STATUS=?, UPDATED_BY=? where SERVICE_CODE=? and MID=?
我可以知道为什么最后两个语句是作为更新而不是插入来的吗?
一侧 -> MERCHANT_INFO 表主键:MID 多方 -> MERCHANT SERVICE 表复合键:MID,SERVICE_CODE(MID 是 MERCHANT_INFO 表的外键)
在 MerchantInfo.hbm.xml..
<set
name="merchantServices"
lazy="true"
inverse="true"
cascade="save-update"
>
<key>
<column name="MID" not-null="true" />
</key>
<one-to-many
class="com.en.common.entity.MerchantServiceEntity"
/>
</set>
在 MerchantService.hbm.xml..
<composite-id name="comp_id" class="com.en.common.entity.MerchantServicePK">
<key-property
name="serviceCode"
column="SERVICE_CODE"
type="java.lang.String"
length="32"
/>
<key-property
name="merchantId"
column="MID"
type="java.lang.Long"
length="38"
/>
</composite-id>
...
<!-- bi-directional many-to-one association to MerchantInfo -->
<many-to-one
name="MerchantInfoEntity"
class="com.en.common.entity.MerchantInfoEntity"
update="false"
insert="false"
>
<column name="MID" />
</many-to-one>
【问题讨论】:
标签: xml spring hibernate spring-mvc