1

如果一个方法有注解@Transactional(readOnly = true),有没有办法允许内部方法写?

例子:

Class A {
   @Transactional(readOnly = true) 
   public void readFoo(){
       b.writeFoo();
   }
}

Class B {
   public void writeFoo(){}
}

我知道这有点违背了拥有 readOnly 注释的目的,但我只想知道是否有办法。

4

2 回答 2

1

@Transactional(propagation = Propagation.REQUIRES_NEW)为我工作。需要注意的一点是,如果该方法接受一个休眠对象,这将不起作用。这仅在您检索休眠对象并在 Propagation.REQUIRES_NEW 方法中进行更改时才有效。

于 2013-05-14T01:17:01.170 回答
0

readOnly注释的属性@Transaction只是对事务管理器的提示。这取决于您用于管理事务的底层技术。它可以优化事务只读性能(休眠),也可以完全忽略readOnly属性。

我认为如果你writeFoo()像这样注释 ie

@Transactional(readOnly = false, propagation = Propagation.NESTED)

它可以独立地对父只读事务进行操作,并且可以毫无问题地写入。但我自己没有测试过。

于 2013-05-07T11:42:04.267 回答