我正在使用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")
}
}
MyException:
class MyException extends Exception{
def errors = []
MyException(errors){
super(errors.toString())
this.errors = errors
}
}
当代码抛出MyException时,我发现以下错误:事务已回滚,因为它已被标记为仅回滚
聚苯乙烯。如果我更改static transactional = true,则不会发生错误。
任何想法?
答案 0 :(得分:0)
我使用注释,你应该设置
static transactional=false
即。使grails的事务代理无效,以便与spring AOP的代理没有重叠
答案 1 :(得分:0)
这应该有效:
@Transactional(noRollbackFor=[FooException, BarException])
def doSomething(...) {
...
}
但请记住,如果您使用事务性注释,grails自动事务在您放置它的服务中不起作用。你需要设置:
@Transactional
class myService(...) {
static transactional = false
...
}