在调用@Transactional注释方法时,如何以编程方式提供特定的事务管理器

时间:2014-11-12 15:55:50

标签: java spring spring-transactions

在我的测试中,我手动实例化生产中@Autowired的类。我用@Autowired个依赖项注入它。在这个类中,我调用一个注释为@Transactional的方法,下游使用@PersistenceContext注释EntitiyManager。我得到的错误是

  

范围内没有事务方面管理的TransactionStatus

我希望能够以编程方式提供上下文使用的EntityManager实例,但不知道如何执行此操作。请指教。另外,如果您需要更多背景,请告诉我。

我从@Transactional Callable运行的ExecutorService调用此ThreadLocal注释方法,因此无法访问{{1}}。

(Java 7和Spring 4.1.1)

2 个答案:

答案 0 :(得分:0)

假设您使用@Transactional,可以使用@Transactional(value="myTransactionManager")

您班上的@Autowired还有EntityManager吗?你能提供课程代码吗?

答案 1 :(得分:0)

只需通过@Autowired获取有效的EM并在需要的地方进行设置。还要检查您的测试是否标记为@Transactional