【问题标题】:Hibernate4, Spring4.3, Thread, SessionHibernate4、Spring4.3、线程、会话
【发布时间】:2018-10-24 11:21:34
【问题描述】:

我在 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 异常,因为会话在父线程中关闭。

我该如何处理?

感谢您的帮助

【问题讨论】:

  • 最后的问题是,我通过线程边界传递了休眠实体。我解决了这个问题,只传递 Oid(主键)并在线程本身中再次加载它。

标签: java spring multithreading hibernate session


【解决方案1】:

在休眠中你可以使用

hibernate.current_session_context_class=thread 

【讨论】:

猜你喜欢
  • 2014-09-29
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 2014-09-28
  • 2011-07-03
相关资源
最近更新 更多