Java Hibernate4,Spring4.3,线程,会话
我在spring.xml中声明了以下内容:Java Hibernate4,Spring4.3,线程,会话,java,spring,multithreading,hibernate,session,Java,Spring,Multithreading,Hibernate,Session,我在spring.xml中声明了以下内容: <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> ... </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"&g
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
...
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- Adapters -->
<bean id="ADBAdapter" class="model.adapter.ADBAdapter">
<constructor-arg>
<ref bean="sessionFactory" />
</constructor-arg>
</bean>
...
所以在我创建了上下文之后。我可以访问我的ADBAdapter并做一些事情
问题是,我想在另一个线程中使用ADBAdapter。
但有时会出现SessionClosed异常,因为会话在父线程中关闭
我该怎么办
感谢您的帮助在hibernate中您可以使用
hibernate.current_session_context_class=thread
在这个线程中,他们说不推荐这样。最后,问题是,我通过线程边界传递了Hibernate实体。我通过只传递Oid(主键)并将其再次加载到线程本身中,解决了这个问题。