在hibernate中删除一对多中的多方数据时报错:
org.hibernate.ObjectDeletedException : deleted object would be re-saved by cascade (remove deleted object from associations): [pojos.UdData#40288669477c2dd501477c2dd6140002]
分析:
字面意思是“被删除的数据因为cascade选项将会被重新保存【方法:将该数据从关联关系中移除】”
解决:
many.setOne(null);//解除与one的关联关系
//由于是在set遍历时进行操作,需要在iter中删除,否则会报java.util.ConcurrentModificationException
//如果是直接取出的many,则不需要此步骤
iter.remove();
s.remove(many);
session.delete(many);//删除many
其他:
http://blog.csdn.net/zhujiaxing666666/article/details/8499103
该blog中提到了其他几种方法,并分析了优缺点
cascade的设置指明:设置方的操作对另一方的影响
如果在多方也设置成all,则在删除一个many记录时把one也会删除掉,一定要注意