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

Java 是否可以将@Transactional与外部Spring上下文调用一起使用?,java,spring,hibernate,spring-orm,Java,Spring,Hibernate,Spring Orm,我有一个使用hibernate和注释的spring应用程序。 类X(在Spring上下文之外)访问类Y(在Spring上下文中)。 这是我使用一个类解决的第一次通信,该类根据堆栈溢出aswer实现ApplicationContextAware 类Y注入了一个@Service类Z,该类在数据库中持久化信息(并且在持久化信息的方法中有一个@Transactional注释) 问题是,当来自Y的调用调用Z.merge()(x->Y->Z.merge())时,会发生以下异常: Caused by: ja

我有一个使用hibernate和注释的spring应用程序。 类X(在Spring上下文之外)访问类Y(在Spring上下文中)。
这是我使用一个类解决的第一次通信,该类根据堆栈溢出aswer实现ApplicationContextAware

类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)
这项工作有可能吗?
我使用的是Spring 4.3.3

您至少添加了一些伪代码?描述您所描述的内容有点困难。您确定您的事务配置设置正确吗?您的
X
类是一个非Springbean,它访问一个非事务性Springbean
Y
,该Springbean调用另一个事务性Springbean,
Z
。如果事务管理设置正确,并且您从应用程序上下文中获得
Y
,这应该是可行的。我解决了使Y类成为组件的问题(类似于@Naros建议的)。根据您的描述,假设
Y
已经被注释或声明为Springbean。如果它没有
@Component
或等效的注释,那么它听起来就不像您最初描述的那样是一个Springbean。