您的位置:首页 > 移动开发 > Objective-C

A different object with the same identifier value was already associated with the session

2014-11-25 13:56 507 查看
hibernate在调用session.update()方法的时候抛出异常:

A different object with the same identifier value was already associated with the session

这个异常的意思是:具有相同的标识符但是值不相同的对象已经和session相关联起来了。

产生这个问题的原因大家都知道,因为在hibernate中同一个session里面有了两个相同标识但是是不同实体,一般出现在两个对象具有一对多或者多对多的更新操作中,使用get方法获取要更新的对象的时候,因为配置了关联关系,会把关联的对象一起加载到session之中,这时当在外部新建了该关联的对象,然后调用set方法赋值,当这时运行update(object)或者SaveOrUpdate(object)方法的时候,提交事务就会报这个错误,但是怎么解决呢?下面是我的解决方案:

在更新操作的前面加一句object = session.merge(object)。

    该方法的作用可以理解为是将session之中同类型的OID相同的持久化对象合并成一个。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐