Spring Boot应用中具有多个数据源的事务注释无法按预期工作

时间:2018-07-26 18:58:08

标签: hibernate spring-boot spring-data transactional

我有一个用@Transactional注释的公共方法,该方法调用一个私有方法,该私有方法调用另一个调用dao.save(...)的私有方法

但是执行保存调用时,出现以下错误:

Caused by: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call

如果我将注释放在类型级别,那么它可以工作,但是事务保持开放状态很长时间。

有2个数据源和事务管理器,一个用于postgres,一个用于mysql。我在方法级别@Transactional(value =“ mySqlTransactionManager”)上调用mySql txn管理器,但是它仍然无法正常工作。

很明显我缺少了一些东西,但我不知道什么。

编辑

结果证明这是一个过渡依赖问题。该Dao来自共享Dao工件,并扩展了自定义共享抽象通用DAO。在实施通用dao时,对实体和交易 经理 而不是经理进行了许多假设。

0 个答案:

没有答案