Grails-事务性Spring NOROLLBAFF不工作
我使用的是Grails1.3.7,代码如下: Grails服务:Grails-事务性Spring NOROLLBAFF不工作,spring,grails,spring-transactions,Spring,Grails,Spring Transactions,我使用的是Grails1.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
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,则不会发生错误
有什么想法吗?如果您使用注释,您应该设置
静态事务=false
i、 e.使grails的事务代理无效,这样就不会与spring AOP中的代理重叠
@Transactional(noRollbackFor=[FooException, BarException])
def doSomething(...) {
...
}
但是请记住,如果使用事务性注释,grails自动事务在放置它的服务中不起作用。您需要设置:
@Transactional
class myService(...) {
static transactional = false
...
}
MyClass Spring是否受管理?假设
MyClass
是一个grails服务,您的方法是否调用任何其他事务性方法?如果是这样的话,norollboor
可能会丢失。该方法调用其他域方法。@codelark和我要问的是MyClass是否是Grails服务(或者是Spring托管的服务)?否则,它将不会自动参与事务。