在grails服务类中设置回滚标志的事务:
TransactionAspectSupport
.currentTransactionInfo()
.transactionStatus
.setRollbackOnly()
当我们向Controller返回异常时会发生什么:
org.springframework.transaction.UnexpectedRollbackException
我们必须在Controller中捕获(但不在任何Service类中)。此代码正在从之前的解决方案中重构,其中所有逻辑都直接在Controller中发生。任何关于在该方法返回时抛出此异常的事件的建议,给出:
static transactional = true
已在所有课程上设置。猜测一些微妙的控制器经文服务魔术发生 - 有谁知道这个?现在只是将异常作为一种解决方法来捕获,但是这会丢失原本会被返回的TransactionStatus对象。
任何想法都非常感激
答案 0 :(得分:3)
Grails中的事务管理非常难看(对我而言)。 所以我正在提供Spring声明式事务: Chapter 9. Transaction management 它们完美地用于grails服务。
返回setRollbackOnly()。这个方法并不简单......当你在内部事务中设置了RollBack = true时,你已经触发了将外部事务回滚到你正在获得异常的事情。
我前段时间遇到过类似的问题 - 找到适合您的最佳解决方案是有用的信息: