HibernateSystemException:没有Hibernate会话绑定到线程

时间:2011-07-04 11:50:03

标签: java hibernate spring

我收到了 HibernateSystemException ,虽然我做了不同论坛上提到的所有内容。

这是applicationContext.xml的一部分

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

我还将@Transactional注释放在了我的班级之上。

@Transactional
public class MyClassImpl

4 个答案:

答案 0 :(得分:2)

A)这是错误的交易经理:

<bean id="transactionManager" 
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

您需要org.springframework.orm.hibernate3.HibernateTransactionManager,正如您在13.3.3 Hibernate > Declarative transaction demarcation中所看到的那样。

DataSourceTransactionManager适用于纯JDBC,不适用于Hibernate(请参阅12.3.8 JDBC > DataSourceTransactionManager)。

B)你也需要这一行:

<tx:annotation-driven transaction-manager="transactionManager" />

答案 1 :(得分:1)

您是否检查过该应用程序上下文文件中是否存在此标记?

<context:annotation-config />

有必要考虑您的注释。

答案 2 :(得分:0)

您是否在配置中包含了tx名称空间?enter image description here

答案 3 :(得分:0)

在做任何请求之前,您可以尝试这段代码:

Session session = SessionFactoryUtils.getSession(dataSource, null, null);
TransactionSynchronizationManager.bindResource(dataSource, new SessionHolder(session));

请随时通知我。