這可能是一個重復的問題,但我找不到(至少我無法理解)一個滿意的答案,因此再次提問.
我正在使用兩個數據源(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交互的唯一地方)
>你能指點一個示例/教程來處理這種情況嗎?
真誠地感謝您閱讀本文!