[英]Spring Boot. @Transactional method calling a @Transactional(readonly=true) method
[英]What happens when @Transactional(readonly=true) method calls @Transactional(readonly=false) method and vice versa?
我想知道,當@Transactional(readonly=true) 方法調用@Transactional(readonly=false) 方法時會發生什么? 用傳播= Propagation.REQUIRED(在外部事務范圍內)談論情況。
public class ServiceA {
ServiceB serviceB;
@Transactional(readonly = true)
public void readOnly() {
// some reading from repo
serviceB.write()
}
}
public class ServiceB {
@Transactional
public void write() {
// some write to repo
}
}
對於相反的情況,同樣的問題,如果@Transactional(readonly=false) 方法調用@Transactional(readonly=true) 方法會發生什么? 我想對於最后一種情況,它只會考慮外部 scope 中的 @Transactional(readonly=false)。
從readOnly=true
調用readOnly=false
不起作用,因為上一個事務繼續進行。
這是因為之前的事務正在繼續。
如果你想讓它工作,你必須讓它開始一個新的事務。 樣本:
public class ServiceB {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void write() {
// some write to repo ..
}
}
在這種情況下,它將起作用,因為將啟動一個新的事務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.