gpt4 book ai didi

grails - Grails-保存多个对象,如果保存失败则回滚所有对象

转载 作者:行者123 更新时间:2023-12-02 14:14:58 25 4
gpt4 key购买 nike

我需要一次保存多个对象,如果一个对象保存失败,则回滚所有对象。
例如 :

class Transaction {
Item item;
}

class Item {
date lastTransaction;
}

如果创建新的事务,则需要更改lastTransaction值并保存该项目。

如果我无法保存项目,则需要回滚事务(反之亦然)。

有任何想法吗?

最佳答案

uck不要抛出异常来回滚事务。利用副作用会产生很高的成本,其中事务管理器(假设运行时异常意味着您不受控制)会自动回滚事务,以防止您遭受更大的损失。这有点像孤独,然后用锤子反复敲打自己的头部,因此一些EMT以及护士或医生可能会花一些时间陪伴您。

回滚事务很容易,但是不幸的是Grails并没有公开以下任何内容:

import org.springframework.transaction.interceptor.TransactionAspectSupport

class FooService {

def someMethod(...) {

boolean somethingBadHappened = ...
if (somethingBadHappened) {
// roll back
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()
}

// ok, proceed
...
}
}

然后您可以检查当前交易是否已回退
TransactionAspectSupport.currentTransactionStatus().isRollbackOnly()

请注意,这在 Controller 中将不起作用,因为事务将在此时结束。

关于grails - Grails-保存多个对象,如果保存失败则回滚所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21138173/

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