【问题标题】:grails: maintain transactional context from Service to Controllergrails:维护从服务到控制器的事务上下文
【发布时间】:2010-09-30 18:40:13
【问题描述】:

在设置了回滚标志的 grails 服务类中有一个事务:

TransactionAspectSupport
          .currentTransactionInfo()
               .transactionStatus
                    .setRollbackOnly()

当我们返回 Controller 时会发生异常:

org.springframework.transaction.UnexpectedRollbackException

我们必须在 Controller 中捕获它(但不是在任何 Service 类中)。这段代码是从以前的解决方案中重构的,所有逻辑都直接发生在控制器中。关于在方法返回时引发此异常的情况的任何建议,考虑到:

static transactional = true

已在所有类上设置。猜测有一些微妙的控制器诗句服务魔术正在发生 - 有人知道吗?现在只是将异常捕获作为一种解决方法,但这会丢失原本会返回的 TransactionStatus 对象。

任何想法都非常感谢

【问题讨论】:

    标签: grails transactions service controller


    【解决方案1】:

    Grails 中的事务管理非常难看(对我来说)。 所以我提供 Spring 声明式事务: Chapter 9. Transaction management 它们在 grails 服务中完美运行。

    返回到 setRollbackOnly()。这种方法并不简单......当您在内部事务中设置 RollBack=true 时,您已触发将外部事务回滚到 sou,但您遇到了异常。

    我前段时间遇到过类似的问题 - 这里有一些有用的信息可以帮助您找到最适合您的解决方案:

    【讨论】:

    • 谢谢。但是,我们已经没有时间研究这些替代方案了,现在只是捕获异常,因为事务存在于服务并进入控制器。答案肯定很感激
    猜你喜欢
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2011-05-26
    相关资源
    最近更新 更多