我正在使用 Grails 1.3.7,我有两个服务,我在 AService 中调用 BService 的方法如下:
BService {
static boolean transactional = true
public void bDoThings() {
//doThings
b.save()
}
}
AService {
static boolean transactional = true
BService bProxy
public void aDoThings() {
//doSomethings
bProxy.bDoThings()
//doSomeOtherThings
throw new RuntimeException()
}
}
我认为在抛出 RuntimeException 之后,aDoThings 会被回滚,而 b 不会被保存。但是只有 aDotThings 是回滚的,b 仍然是持久的。
但是当我改变
BService bProxy
至
BService bService
或者
def bService
一切正常。所以我想知道为什么会这样,因为我认为 bProxy 只是一个变量名,它不应该影响事务的行为。谁能解释为什么?