当@Transactional(readonly=true)方法调用@Transactional(readonly=fa



我想知道,当@Transactional(readonly=true)方法调用@Transactional(readonly=false)方法时会发生什么?用propagation来谈论情况= 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)方法会发生什么?我想对于最后一种情况,它只会考虑来自外部作用域的@Transactional(readonly=false)。

呼叫readOnly=falsefromreadOnly=true由于前一个事务仍在继续,因此无法工作。

这是因为上一个事务正在继续。

如果你想让它工作,你必须让它开始一个新的事务。示例:

public class ServiceB {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void write() {     
// some write to repo ..
}
}

在这种情况下,它将工作,因为新的事务性

最新更新