只有一个在同一时间的应用程序每个用户的角色。 要更新的作用,我们以前除去所有的当前角色:
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发生一些错误,并创建,它会正确地回滚?
顺便说一句,我想知道如何检查自己是否可以正常工作:我问这个问题在一个单独的线程: 如何检查是否一个@Transactional方法Grails中正确地执行回滚?