Java HibernateeException:在调用session.update()时非法尝试将集合与两个打开的会话关联
我有一个表,它与许多其他表关联,或者是一对一关系,或者是一对多关系。当使用Java HibernateeException:在调用session.update()时非法尝试将集合与两个打开的会话关联,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,我有一个表,它与许多其他表关联,或者是一对一关系,或者是一对多关系。当使用session.update(Parent_Table)更新这些表时,我得到以下异常 org.hibernate.HibernateException:非法尝试将集合与两个打开的会话关联 更新方法: public static String update(ParentTable table) throws Exception { Session session = HibernateUtil.getS
session.update(Parent_Table)
更新这些表时,我得到以下异常
org.hibernate.HibernateException:非法尝试将集合与两个打开的会话关联
更新方法:
public static String update(ParentTable table) throws Exception {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
try {
session.beginTransaction();
session.update(table);
session.getTransaction().commit();
return success;
} catch (Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
return failure;
}
}
在这里,我添加新的子记录并使它们与父表关联,或者修改现有的父或子记录,并将父表传递给session.update(table)
不知道如何创建两个不同的会话。即使在update语句之前关闭现有会话并打开新会话,也会得到相同的异常
有人能提出这里可能出现的问题吗?您使用的是什么框架和容器?什么版本 你用这样的东西吗
<filter>
<filter-name>OSIV</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OSIV</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
奥西夫
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
奥西夫
/*
spring-jpa-config.xml
<bean name="openSessionInViewInterceptor"
class="org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
您使用@Transactional?-也可以创建新会话。异常表明parenttable的对象图中包含的集合已与另一个hibernate会话关联。另一个会话读取了parenttable的明显结论。尝试在SO或google上搜索邮件。因此,它带来了49个结果。你看了吗?@nakosspy,我已经看了大部分案例,所以选择了正确的答案。似乎与我的情况无关。好的,您确定用于读取表对象的会话未打开吗?我尝试执行的操作是在通过getCurrentSession()获得的会话中进行更新。甚至我也尝试过在更新之前关闭所有打开的会话并创建一个新会话,但结果是一样的。您如何配置SessionFactory本身?