gpt4 book ai didi

grails事务 Controller ,处理异常

转载 作者:行者123 更新时间:2023-12-02 15:06:32 26 4
gpt4 key购买 nike

我的 Controller 中有以下方法:

@Transactional
def update(Filter filterInstance) {
bindData(filterInstance, params, [include: ['name, 'code', 'value']])

filterService.update(filterInstance)
mappingService.update(filterInstance)

respond filterInstance
}

我需要使用 @事务 在这里,因为我调用了多个服务。交易因某种原因失败时如何处理?我应该使用 尝试捕获 或者可能有其他方法?

谢谢!

最佳答案

如果您在 Controller 操作中有代码,则必须注意两件事:

  • 事务性(使用 try/catch/finally 等)
  • 在 TX 成功/失败的情况下,该操作应该返回/呈现什么。

  • 它已经够复杂了,所以你应该把服务调用放到另一个服务方法中,在那里你只需要处理事务。

    Controller Action 是一个地方,您可以在其中触发非常简单的单步事务。如果您需要实现更复杂的 TX-logic,请在服务层进行

    ref-doc关于如何控制多步交易。

    你可以让你的 update()方法返回 false 或抛出异常,如果发生这种情况,调用 status.setRollbackOnly() .别忘了标记 update() @Transactional(propagation = Propagation.SUPPORTS) 的方法

    关于grails事务 Controller ,处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27638777/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com