这可能是一个重复的问题,但我找不到(至少我无法理解)一个满意的答案,因此再次提问.
我正在使用两个数据源(MySQL和Oracle).以下是执行流程:
主方法-A调用方法-B(写入Oracle DB)然后它(方法-A)调用方法-C(写入mySQL DB)然后它(方法-A)调用方法-D(写入Oracle DB) ).
如果在任何地方发生故障,一切都应该回滚.目前只有Oracle DB中的更改才会被回滚. mySQL DB没有回滚.
我已经定义了两个事务管理器.
=========> First <=========
...
MYSQL DB Properties
==============================
>在方法-A之上我使用了@Transactional注释
>在方法-B之上我使用了@Transactional注释
>在方法-C之上我使用了@Transactional(“txManager2”)
注解
>在方法-D之上我使用了@Transactional注释
问题是:
>为什么MySQL的变化不会被回滚?
>使这项工作的唯一方法是使用JTA使用全局事务管理吗? (它是一个遗留系统,这是我需要与两个DB交互的唯一地方)
>你能指点一个示例/教程来处理这种情况吗?
真诚地感谢您阅读本文!