关于cascade="all-delete-orphan"
通俗来讲就是级联删除,当一对多的情况下,父节点删除子节点相应删除操作。其他类似更新操作也受此影响,因为此对象如果已经持久化在缓存中,对其进行操作就需要考虑其持久化一致性问题。
以下为个人对持久对象进行拷贝所遇到的问题以及过程:
1. 当首先对其对象进行拷贝时,考虑到hibernate的特性,将PK 置为空,然后进行saveOrUpdate操作,但其出现异常:
Don't change the reference to a collection with cascade="all-delete-orphan"
不能对其集合进行操作,在级联删除的情况下,原因为:如果对象已经存在于该持久化中,其中的关联SET也在持久化中,对其父节点对象更改PK后,子节点的由于找不到该对象并且原持久内容与之不符合。
解决方案:由于持久化中每个对象有相应的ID进行标识,并且对象均属于引用类型,所以若要拷贝对象并且用于插入数据库操作,建议使用对象克隆的方式,若有set类型的子节点,建议首先将其置空,之后使用ArraySet继续添加"克隆"的子节点对象,对于插入数据库就将其PK置空,添加父节点为克隆后的对象,即可使用saveOrUpdate方法进行操作。
以上为个人愚见,如有差错望予以了解并更正。
分享到:
相关推荐
hibernate many-to-many级联保存,级联更新,级联删除
Ajax-级联菜单 Ajax-级联菜单
inverse Hibernate_级联关系说明_-_关于cascade和inverse的用法
安卓--级联下拉列表实现DEMO
Hibernate的级联操作(增,删,该)
省市县区/乡-级联表以及数据
matlab开发-级联H桥多电平转换三相。级联H桥多电平逆变器三相仿真
hibernate 级联(cascade和inverse)一对多,Jar包,数据库建表语句都好了,只要修改一下,数据库配置文件,就可以使用了,使用junit进行测试。
matlab开发-级联仿真级反相器模型。级联多电平逆变器有21级。
音视频-编解码-级联卷积编码和空时编码的研究.pdf
深入理解hibernate many-to-one(多对一)及 cascade(级联).
三级联动-级联选择器 原文地址:https://blog.csdn.net/qq_43592352/article/details/100266253
matlab开发-级联多电平转换器。单相七电平级联H桥多电平逆变器
电信设备-级联式移动电源测试装置.zip
电信设备-级联信息处理的方法及终端.zip
第七章_Hibernate_-_级联策略 第七章
电信设备-级联式SVG串并行协同通信控制器.zip
matlab开发-级联三电平直接转换器。它将不受调节、畸变的交流电压波形转换成可调节的纯正弦波形。
联系通过写存储过程进行级联删除,在实际开发中总结的