Spring MVC + Hibernate,用户修改基本信息的流程如下:
在controller中的editInfo方法中加载User对象,对象传递到页面在表单中显示,用户修改数据后提交到controller的doEditInfo方法,doEditInfo中重新获取对象并修改对应属性调用session的saveorupdate方法保存修改。
在执行saveorupdate时报异常如下:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [cn.xxx.model.User#239433]
at org.hibernate.engine.internal.StatefulPersistenceContext.checkUniqueness(StatefulPersistenceContext.java:697)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:296)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:241)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:735)
at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:727)
at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:723)
......................................
参考:http://blog.csdn.net/yezaishu/article/details/1879372
将saveorupdate改为merge,问题解决!