我基本上具有在该结构中的一些对象相关联的(真正的数据模型是一个比较复杂的):休眠错误:用相同的标识符值不同的物体已经与所述会话
- A具有许多与B.一对多关系(B具有
inverse="true"
) - B具有与C的多对一的关系(I有
cascade
集到"save-update"
) - C是一种类型/类别表的。
另外,我应该提到主键是保存时由数据库生成的。
有了我的数据,我有时会遇到问题,其中A有一组不同的B对象,而这些B对象引用相同的C对象。
当我打电话给session.saveOrUpdate(myAObject)
时,出现一个休眠错误:"a different object with the same identifier value was already associated with the session: C"
。我知道hibernate不能在同一个会话中插入/更新/删除同一个对象两次,但是有没有办法解决这个问题?这似乎并不是罕见的情况。
在我研究这个问题的过程中,我看到有人建议使用session.merge()
,但是当我这样做时,任何“冲突”的对象都会作为空白对象插入到数据库中,所有值都设置为空。显然,这不是我们想要的。
[编辑]我忘记提及的另一件事是(由于体系结构的原因超出我的控制),每个读或写需要在一个单独的会话中完成。
看看这个[ **答案**](http://stackoverflow.com/questions/1074081/hibernate-error-org-hibernate-nonuniqueobjectexception-a-different-object-with)可以帮助你.. – joaonlima 2013-04-26 23:43:01