同时在应用程序中每个用户只有一个角色。要更新角色,我们之前删除了所有当前角色:
Integer roleId = params.roleSelector.toInteger()
def roleInstance = Role.findById(roleId)
UserRol.removeAll userInstance
UserRol.create userInstance, roleInstance
它正在工作,但我认为执行 removeAll 并作为单一操作创建更正确,以便在发生任何错误时正确回滚。
可能吗?
更新 1。
我在这里发现我们可以添加@Transactional 来使方法具有事务性。所以如果我们写:
@Transactional
private def unitaryOperationUpdate {
Integer roleId = params.roleSelector.toInteger()
def roleInstance = Role.findById(roleId)
UserRol.removeAll userInstance
UserRol.create userInstance, roleInstance
}
如果 removeAll 和 create 之间发生了一些错误,它会正确回滚吗?
顺便说一句,我想知道如何检查自己是否正常工作:我在单独的线程中问了这个问题:如何检查@transactional 方法是否在 Grails 中正确执行回滚?