illegally attempted to associate a proxy with two open Sessions

最近在做struts2批量上传的时候,遇到了hibernate出现

org.springframework.orm.hibernate3.HibernateSystemException: illegally attempted to associate a proxy with two open Sessions;的问题。并且只能正确保存1个提交对象,其余提交的对象均会保存。
openSessions

这个问题主要是由于在第一个对象通过

getHibernateTemplate().save(transientInstance);

之后,将瞬时实例持久化,此时它与当前的session和持久化上下文都建立了联系。对后面多个对象进行save操作的时候就会导致打开多个session的问题。

解决方法:使用merge方法替换save方法即可解决

getHibernateTemplate().merge(detachedInstance);

由于merge持久化对象后,session不会保持状态。当需要使用该对象时,需要重新对其进行find操作。这样便不会产生同时打开多个session的问题。

《illegally attempted to associate a proxy with two open Sessions》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注