org.springframework.orm.hibernate3.HibernateSystemException: a different object with the same identifier value was already associated with the session: [com.news.admin.entity.Role#23ead68a9cea4720987fcbf0674e5daa]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.news.admin.entity.Role#23ead68a9cea4720987fcbf0674e5daa]
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
项目环境:Struts3+hibernate+Spring
出现该异常时机:在jsp页面添加对象,连续多次添加对象,第二次添加数据的时候
原因分析:
由于某对象被添加之后,该对象已经拥有id, 并且在session的管理范围内,所以在第二次添加的时候,虽然该对象的其他属性不同,但是该对象的id在数据库中已经存在同样的id,故不能添加
解决办法:在添加成功之后重置该对象
注意事项:不要在添加成功之后里面重置,要保证关闭该session之后才能重置,否则,重置的操作会同步到数据库中
(我在项目中的解决办法是:在action层中对添加成功之后的对象重置)