日期:2014-05-20  浏览次数:20609 次

hibernate级联更新的问题
维护部门和员工以及职务信息。

现在有4个表:

department表:department的基本信息;
employee表:员工的基本信息;
position表:职务信息;

employeePosition表存放department、employee、position的ID来实现这3个对象的多对多的关系。

现在department和employeePosition是one-to-many的关系,employee同样也是与employeePosition是one- to -many的关系。

因为从department和employee都要维护这个信息。

但是当我从department和employee来删除employeePosition的时候都会报错delete object re-saved by cascade

请问我在删除的时候需要如何解除关联呢?就是从department删除employeePosition的时候解除employee和employeePosition的关联!

同样从employee删除employeePosition的时候解除department和employeePosition的关联

------解决方案--------------------
设置cascade=false试一试吧
------解决方案--------------------
首先,我没看明白,你怎么用一个表,来维护三个对象之间的多对多关系?
然后,你说“从employee删除employeePosition的时候解除department和employeePosition的关联”,这种关联应该是通过hibernate的映射文件来定义的,在服务启动的时候加载,无法动态加载吧。所以我觉的你这个想法是没有办法实现的。
如果是正常的2个对象之间的多对多关系,应该是可以通过设置cascade来解决你描述的错误。
------解决方案--------------------
在级联关系中一对多的关系要由多的一方维护哦!!
切记!然后你要从现实中考虑 比如你是老板 你想合并或去掉一个部门,那是不是吧部门的员工都裁掉呢??
应该不是吧!!
所以cascade="??"是你应该考虑的 saveOrUpdate 或是别的??

好像表的关系有点不清楚哦

------解决方案--------------------
表的关系有点不清楚


表的关系有点不清楚
------解决方案--------------------
把映射文件贴出来
------解决方案--------------------
数据表设计有点问题!