回滚都是在这里完成的预期:Grails的(2.3)@事务不会回退
@Transactional(propagation = Propagation.REQUIRES_NEW)
def test1() {
def dummy = new Dummy(name: "test1")
dummy.save()
throw new RuntimeException("test1!")
}
但在这里没有 - 这可能是错误的 - try/catch语句应该不会影响到行为:
@Transactional(propagation = Propagation.REQUIRES_NEW)
def test2() {
def dummy = new Dummy(name: "test2")
dummy.save()
try {
throw new RuntimeException("test2!")
} catch (all) {
println all.message
}
}
我一直盼望代理反正承认例外。见测试2浏览:http://devhobbs.blogspot.de/2015/04/grailsgorm-transactions.html(测试2的结果:没有书面记录异常回滚。) –
只是要清楚,你是在一个服务? '@Transactional(传播= Propagation.REQUIRES_NEW) DEF TEST1(){'是在服务?而不是控制器,因为如果你看看你提供的例子'@Transactionalclass BookService {' – Vahid
我更新了我的回答,因为我的评论回来了关于你的例子等会太长检查更新的答案 – Vahid