没有Hibernate会话绑定到线程,配置不允许在这里创建非事务性的

时间:2012-07-24 08:06:34

标签: spring hibernate transactions

我遇到问题:

  

没有Hibernate会话绑定到线程,并且配置不允许   在这里创建非交易的

测试我的项目时。

我使用Spring 2.0.7(这是必须在该项目中)和Hibernate 3.我有

  • SessionFactory已定义

  • 定义了事务管理器(注入了会话工厂)

  • <tx:annotation-driven transaction-manager="transactionManager"/> - 开启交易的注释

我用以下内容注释了我的测试:

@Test

@Transactional

并继承了AbstractAnnotationAwareTransactionalTests

=&GT;我收到此错误:没有Hibernate Session绑定到线程,并且配置不允许在此处创建非事务性的

我能克服的唯一方法就是使用:TransactionStatus transaction = transactionManager.getTransaction(transactionDefinition);

在我打电话之前

进行测试

sessionFactory.getCurrentSession().save(myObject);

有什么建议吗?或者更好:它是如何工作的?为什么它不能创建事务会话?为什么没有绑定hibernate会话?我已经读过一些关于它的内容,但我仍然不清楚。我认为我已尽一切努力使其发挥作用,但显然这还不够。

提前,

Stepik

2 个答案:

答案 0 :(得分:0)

我认为问题在于您从AbstractAnnotationAwareTransactionalTests扩展您的类。尝试删除继承(它应该没有它)。或者尝试从AbstractTransactionalJUnit4SpringContextTests类扩展您的类。

您可以查看here at similar post

答案 1 :(得分:0)

在我的情况下,错过了base-package。一个像:

<context:component-scan base-package="com.companyname" />