Java Hibernate4,Spring4.3,线程,会话

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

我在spring.xml中声明了以下内容:

 <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(主键)并将其再次加载到线程本身中,解决了这个问题。