org.hibernate.NonUniqueObjectException
来源:互联网 发布:php 获取上传文件类型 编辑:程序博客网 时间:2024/06/11 17:11
本文转载自:http://blog.sina.com.cn/s/blog_697fbb350100kj63.html
用hibernate做修改和删除的时候,有时候会遇到 org.hibernate.NonUniqueObjectException 异常,
a different object with the same identifier value was already associated with the session
可以解释为 有一个具有相同值的不同对象已经与和 session 相关联。
Session session = HibernateSessionFactory.getSession(); // 加载OID为1L的对象,会被放在session缓存中 LoanDetail detail = (LoanDetail)session.get(LoanDetail.class,1L); // new 一个OID也为1L的临时对象 LoanDetail newDetail = new LoanDetail(1L); newDetail.setSubjectId(1000L); // 持久化一个临时对象,试图放在session的缓存中,因OID冲突出现异常 session.save(newDetail); // 执行saveOrUpdate同样会出现以上的异常 // session.saveOrUpdate(newDetail);
解决方法:
1) 如果用的 hibernate 2, 需要在get/load/query到持久化对象,赋上新的属性值,再 save/update/saveOrupdate.
对以上代码就是:不能 new 一个session中已存在OID的对象,直接
detail.setSubjectId(1000L);
session.save(detail);
session.save()一个持久化对象时,会转化成update调用。
2) 使用 hibernate 3 的 merge 方法. session.merge(newDetail)即可,它会在 session 缓存中找到持久化对象,把新对象的属性赋过去,再保存原session中的持久化对象。
如果在session或数据库中没有的对象,用merge方法的话,它也能够帮你把记录 insert 到表中,相当于 save 方法。
0 0
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException学习
- org.hibernate.NonUniqueObjectException 问题
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException解决方法
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException
- org.hibernate.NonUniqueObjectException异常解决方法
- org.hibernate.NonUniqueObjectException异常解决方法
- hibernate 保存出错:org.hibernate.NonUniqueObjectException
- 出现 org.hibernate.NonUniqueObjectException 错误的解决方法
- 异常org.hibernate.NonUniqueObjectException及其解决
- org.hibernate.NonUniqueObjectException 个人的解决办法
- hdu 3832 Earth Hour (最短路变形)
- Swift(1):常量与变量
- 必须得对自己狠一些
- Oracle正则表达式用法
- Spring中的@Transactional配置
- org.hibernate.NonUniqueObjectException
- SPOJ QUEST5 Nail Them
- AngularJS移动开发中的坑汇总
- 群联PS2251-03东芝MLC量产成功教程(东芝16G)
- Java:int 转 long
- IOS UIImagePickerController
- Restricted Boltzmann Machine 数学推倒
- SPOJ 1026 Favorite Dice
- 【分治法】线性时间选择算法