【发布时间】:2013-03-08 07:52:12
【问题描述】:
我正在使用 grails 1.3.7 并具有以下代码:
Grails 服务:
class MyClass {
static transactional = true
@Transactional(noRollbackFor = MyException.class)
public MyObject myMethod(Map map1, Boolean bl1 = false) throws MyException {
//codes
if(...){
throw new MyException("msg")
}
}
我的异常:
class MyException extends Exception{
def errors = []
MyException(errors){
super(errors.toString())
this.errors = errors
}
}
当代码抛出 MyException 时,我发现以下错误:事务回滚,因为它已被标记为仅回滚
附言。如果我更改 static transactional = true 则不会发生错误。
有什么想法吗?
【问题讨论】:
-
MyClass Spring 是否托管?
-
假设
MyClass是一个grails 服务,您的方法是否调用了任何其他事务方法?如果是这样,noRollbackFor可能会丢失。 -
该方法调用其他领域方法。
-
@codelark 和我要问的是 MyClass 是否是 Grails 服务(或其他 Spring 托管服务)?如果没有,它不会自动参与事务。
-
控制器调用 Grails 服务“MyClass”。
标签: spring grails spring-transactions