gpt4 book ai didi

database - 如何将两个单元操作(removeAll + create)合并为一个

转载 作者:行者123 更新时间:2023-12-02 15:09:36 24 4
gpt4 key购买 nike

每个用户同时在应用程序中只有一个角色。要更新角色,我们先前删除了所有当前角色:

Integer roleId = params.roleSelector.toInteger()
def roleInstance = Role.findById(roleId)
UserRol.removeAll userInstance
UserRol.create userInstance, roleInstance

它正在工作,但是我认为执行removeAll并将其创建为一个统一的操作来更正确,以便在发生任何错误时进行正确的回滚。

可能吗?

更新1

我发现 here可以添加@Transactional来使方法事务化。因此,如果我们写:
@Transactional
private def unitaryOperationUpdate {

Integer roleId = params.roleSelector.toInteger()
def roleInstance = Role.findById(roleId)
UserRol.removeAll userInstance
UserRol.create userInstance, roleInstance
}

如果在removeAll和create之间发生了一些错误,它将正确回滚吗?

顺便说一句,我想知道如何检查自己是否正常工作:我在另一个线程中问了这个问题: How to check if a @transactional method perform rollback correctly in Grails?

最佳答案

服务是执行此操作的正确位置,因为它们已经是事务性的。这意味着如果出现问题,事务将被回滚。

附带说明的是,只有未经检查的异常才会回滚您的事务。

关于database - 如何将两个单元操作(removeAll + create)合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18535717/

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