[英]Spring @Transactional anotation not working in a for loop with using try catch
[英]Spring @Transactional anotation questions
我有兩個方法都標注為@Transactional,並且都執行一些數據庫操作,主要是插入操作。
我從methodA調用methodB
@Transactional
public void methodA(){
methodB();
// Some database Operations
// some error conditions....
throw exception;
}
@Transactional
public void methodB(){
// Some database Operations
}
因此,僅在所有操作成功后,我才想提交MethodA和MethodB的數據庫事務。 因此,即使在methodA中遇到異常,在methodB中所做的更改仍將提交。
如果要在methodA中遇到錯誤,我想將MethodB的更改回滾。
我需要做其他事情嗎?
在methodA()
調用的所有方法都是事務性的,因為@Transactional批注默認情況下具有required的傳播 。 因此,並不完全需要methodB()
中的@Transactional。
當從methodA調用methodB時,它不會創建新的事務,因為您沒有調用將處理所有事務創建和回滾的spring代理,因此來自methodA AND methodB的插入將在同一事務中執行。
所以不,您不需要做任何其他事情...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.