org.hibernate.NonUniqueObjectException

今天用SSH框架写点东西就曝出这个错误

出现问题的代码块是这样的

	/** 修改 */
	public String edit() throws Exception {
		// 从数据库中取出对象
		Forum forum = forumService.getById(model.getId());
		// 设置要修改的属性
		forum.setName(model.getName());
		forum.setDescription(model.getDescription());
		// 更新到数据库
		forumService.update(model);
		return "toList";
	}

就是说登录后在修改时session中存在两个标识相同的实体

把前面的代码注释掉

	/** 修改 */
	public String edit() throws Exception {
//		 从数据库中取出对象
//		Forum forum = forumService.getById(model.getId());
//		// 设置要修改的属性
//		forum.setName(model.getName());
//		forum.setDescription(model.getDescription());
//		 更新到数据库
		forumService.update(model);
		return "toList";
	}

可以了!

基本类中涉及到更新操作:

protected Session getSession() {

return sessionFactory.getCurrentSession();

}

public void update(T entity) {

getSession().update(entity);

}

这个应该是缓存的问题,会话没有及时更新

版权声明:本文为博主原创文章,未经博主允许不得转载。如需转载,请注明出处:http://blog.csdn.net/lindonglian

时间: 2024-10-03 10:24:40

org.hibernate.NonUniqueObjectException的相关文章

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session异常解决办法

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session异常解决办法 为什么还会说已经存在相同的session了呢.然后每次将项目重启后第一次编辑的时候问题不会触发,只有当第二次操作的时候才会出现这个问题. 解决办法:关闭session.好好检查操作完成后有没有关闭会话. org.hibernat

org.hibernate.NonUniqueObjectException 异常

在做hibernate修改和删除的时候,可能会遇到 org.hibernate.NonUniqueObjectException 异常,a different object with the same identifier value was already associated with the session 这个问题的出现 主要是当前状态下有一个具有相同值的不同对象已经与和 session 相关联了. 就好比: Session session = HibernateSessionFacto

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread---------程序报错

今天遇到了这个问题: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:-- 找其原因是因为同一个object,如一个person在seession里保存了一份,而增加的别的object,如company的时候,由于做了关联关系,从数据库里又get了一个person,而这个person和s

hibernate org.hibernate.NonUniqueObjectException错误!

错误环境: 错误:org.hibernate.NonUniqueObjectException 在做删除出库单的时候,关联的表友出库明细信息,之前有地方用过这个方法去查一些东西,设置了hibernate二级缓存,他把我查的东西存到session,然后我在用hql语句去从数据库里查,hibernate即从session找到了这个东西,又从数据库查到了这些东西,所以找到两个,我只需要一个,就报以上的错误. 方法一:找到之前用到这方法的所有者,谁使用,谁负责. 方法二:换用SQL语句,但这样不会过hi

Hibernate开发中遇到org.hibernate.NonUniqueObjectException处理

今天在项目中遇到更新数据的操作,在编码中发现并未报错,但数据并未得到更新,于是花了大半时间找是什么问题,最后发现是try的时候直接把异常吞了(= =!!血的教训呐)! 排查后发现抛出一个异常org.hibernate.NonUniqueObjectException,通过反复检查和度娘的结果发现,原来是下面的代码出错 Session session = HibernateSessionFactory.getSession(); session.getTransaction().begin();

org.hibernate.NonUniqueObjectException:a different object with the same identifier value was alread

转自: http://blog.csdn.net/zzzz3621/article/details/9776539 看异常提示意思已经很明显了,是说主键不唯一,在事务的最后执行SQL时,session缓存里面有多个(>1)主键一样的对象. 了解过hibernate的都知道它有一个一级缓存,即session级别的缓存,在一个事务的执行过程中可以管理持久化对象,在事务最后执行SQL,可以减少数据库的操作. 报这个异常就得仔细看看你的代码,一定有地方引用的对象已经不同了. 下面就是一个典型的例子: [

[Java面试八]Hibernate总结以及在面试中的一些问题.

1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码. ②.Hibernate 是一个基于JDBC的主流持久化框架,是一个优秀的ORM 实现.他很大程度的简化DAO层的编码工作 ③.hibernate 的性能非常好,因为它是个轻量级框架.映射的灵活性很出色.它支持各种关系数据库,从一对一到多对多的各种复杂关系. 开发流程 2.什么是延迟加载? 延迟加载机制是为了避免一

深入hibernate的三种状态(转)

学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象.但是大家又是否对hibernate的session的那几个特殊方法一清二楚呢?或者说大家是否能够一眼就快速看出一个测试用例在反复的调用sess

深入hibernate的三种状态

学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象.但是大家又是否对hibernate的session的那几个特殊方法一清二楚呢?或者说大家是否能够一眼就快速看出一个测试用例在反复的调用sess