需要停止导致事务失败的异常

时间:2014-08-22 17:35:25

标签: grails gorm

在我的Grails 2.3.9代码中,可以抛出异常,但这不会导致事务失败。

此流是ServiceA.serviceA()通过另外几个服务间接调用ServiceB.serviceB()ServiceB.serviceB()抛出异常。其他几个服务调用ServiceB.serviceB(),但我只想让Transaction在调用时不会失败。

这就是我的尝试:

  1. 标记为ServiceA.serviceA()
  2. @Transactional(noRollbackFor=[MyException.class])
  3. 上面标有ServiceA
  4. static transactional=false

    都没有工作。

    我也试试:

    1. 以上内容也ServiceB.serviceB()标有@Transactional(noRollbackFor=[MyException.class])
    2. 以上所有内容以及ServiceB标有static transactional=false
    3. static transactional = false

      为了测试这个,我正在运行spock集成测试。为了确保集成测试是事务性的,我static transactional = false位于集成测试的顶部。

      我设法使其工作的唯一方法是将ServiceA和ServiceB之间的所有服务都设为org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only at GrailsMelodyGrailsPlugin$_closure4_closure15_closure16.doCall(GrailsMelodyGrailsPlugin.groovy:165)

      否则我看到了:

      {{1}}

      这是唯一的解决方案吗?

0 个答案:

没有答案