如何回滚在grails中使用@Transaction注释的控制器/动作?
我保存了两个对象,如果有任何错误就想回滚。
由于
答案 0 :(得分:0)
您有两种选择。保留注释,然后抛出RuntimeException
。 @Transactional
的默认行为是在遇到RuntimeException
时回滚当前事务。由于显而易见的原因,这不是一个很好的选择。
另一方面,如果遇到错误,您可以从相关操作中抛出已检查的异常。然而,这需要对注释稍作修改:
@Transactional(rollbackFor = Exception.class)
上面的方法有点笨拙,所以你可能想要使用你打算抛出的特定Exception类。例如:
@Transactional(rollbackFor = IOException.class)