我想知道,当@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)。
1条答案
按热度按时间pftdvrlh1#
打电话
readOnly=false
从readOnly=true
由于上一个事务继续,因此不起作用。这是因为上一个事务正在继续。
如果你想让它工作,你必须让它开始一个新的事务。样品:
在这种情况下,它将工作,因为将启动一个新的事务。