如果一个方法有注解@Transactional(readOnly = true),有没有办法允许内部方法写?
例子:
Class A {
@Transactional(readOnly = true)
public void readFoo(){
b.writeFoo();
}
}
Class B {
public void writeFoo(){}
}
我知道这有点违背了拥有 readOnly 注释的目的,但我只想知道是否有办法。
如果一个方法有注解@Transactional(readOnly = true),有没有办法允许内部方法写?
例子:
Class A {
@Transactional(readOnly = true)
public void readFoo(){
b.writeFoo();
}
}
Class B {
public void writeFoo(){}
}
我知道这有点违背了拥有 readOnly 注释的目的,但我只想知道是否有办法。
@Transactional(propagation = Propagation.REQUIRES_NEW)
为我工作。需要注意的一点是,如果该方法接受一个休眠对象,这将不起作用。这仅在您检索休眠对象并在 Propagation.REQUIRES_NEW 方法中进行更改时才有效。
readOnly
注释的属性@Transaction
只是对事务管理器的提示。这取决于您用于管理事务的底层技术。它可以优化事务只读性能(休眠),也可以完全忽略readOnly
属性。
我认为如果你writeFoo()
像这样注释 ie
@Transactional(readOnly = false, propagation = Propagation.NESTED)
它可以独立地对父只读事务进行操作,并且可以毫无问题地写入。但我自己没有测试过。