关于Hibernate级联更新的一个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Hibernate级联更新的一个问题相关的知识,希望对你有一定的参考价值。
比如两个类Classes(教室),Student(学生)是一对多的关系。并且双向关联,而在Classes的hbm映射中包含Student的一个set有属性inverse=true和cascade=all。就是维护关系权在Student上,而且Classes对Student级联保存、更新、删除。而Student里面没有对Classes的级联操作。
如果Classes中有一个属性需要更新,然后调用了session.update(class);的方法进行更新。的确Classes是更新了,但是同样也把Classes关联的所有的Student更新了一次,比如Classes中有60个Student就多更新了60次。但是其实Student中是没有属性改动的。那多发出了这么多更新的SQL语句,肯定要影响性能,我想问问这应该怎么办呀。怎么才能在更新Classes时不级联更新Student呢?Classes必须要级联保存Student,但是不需要更新,应该怎么做啊?
inverse=true
cascade=all
关系在Student上
而且Classes对Student级联保存、更新、删除
----------
Classes必须要级联保存Student, 但Student不要更新
----------
see?
then programm it.... 参考技术B cascade=all
inverse=false本回答被提问者采纳
hibernate一对多单向关联时更新问题
需求:
修改一个联系人,为其重新分配客户
问题:
当更新一个托管态/持久态对象时,该对象关联了一个临时态对象,会报错
解决办法:
使用级联保存更新
要更新谁,就在谁的映射文件中配置
<!-- 一对多关系映射:
set元素的属性:
cascade:级联操作。
取值:
save-update:级联保存更新
delete:级联删除。-->
<set name="linkmans" table="cst_linkman" cascade="save-update,delete" >
<key column="lkm_cust_id"></key>
<one-to-many class="CstLinkMan"/>
</set>
多对一关系映射:
many-to-one元素的属性:
cascade:级联操作
取值:save-update 级联保存更新
<many-to-one name="customer" class="CstCustomer"
column="lkm_cust_id" cascade="save-update" />
以上是关于关于Hibernate级联更新的一个问题的主要内容,如果未能解决你的问题,请参考以下文章
关于Hibernate级联更新插入信息时提示主键不为空的问题“org.hibernate.StaleStateException: Batch update returned unexpected r