是否可以将@Transactional与外部Spring上下文调用一起使用?

时间:2017-01-17 18:05:59

标签: java spring hibernate spring-orm

我有一个spring应用程序,可以使用hibernate和annotations。 一个类X(在Spring上下文之外)访问一个类Y(在Spring上下文中) 我使用根据此Stack Overflow aswer实现ApplicationContextAware的类解决了第一个通信 How to access a method a Spring Bean from a class not in the Spring Container

类Y注入一个@Service类Z,它在数据库中保存信息(并且在持久保存信息的方法中有@Transactional注释)。

问题是当来自Y的调用调用Z.merge()(x - > Y - > Z.merge())时,会发生以下异常:

Caused by: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'merge' call
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:282)
at com.sun.proxy.$Proxy48.merge(Unknown Source)

这项工作有可能吗? 我是春天的使用4.3.3

0 个答案:

没有答案