grails - 通过两次连续保存使唯一验证异常失效

标签 grails gorm

假设名称 id 是我的用户表上的唯一字段,并且我为这两个表设置了唯一的约束。因此,如果我有一个 id为2 名称为“robel” 的值,为什么下面的代码给了我验证异常?

User old = UserFindByName("robel")
old.setName("changed")
old.save(failOnError: true)
User neew = new User(name:"robel")
neew.save(failOnError: true)

我尝试设置断点,并在保存 neew 之前检查的值是否已更改,我确定它已更改,但最后一行给我一个异常(exception),说名称:“robel”必须唯一。这是为什么?发生了什么?

最佳答案

在添加新的一个实例之前,您应该flush changes。更改:

old.save(failOnError: true)

至:
old.save(failOnError: true, flush: true)

关于grails - 通过两次连续保存使唯一验证异常失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35310243/

相关文章:

unit-testing - Grails 测试问题

grails - Grails如何与SQL Server数据库正确地一对多映射

grails - 域对象属性列表,不包括关联

hibernate - Grails钩入GORM beforeUpdate()

grails - 在 Grails 中创建一个新的资源包?

grails - 无法在Grails中正确登录

grails - 将整个应用程序的varchar映射到nvarchar

Grails RestBuilder 查询参数

grails - Grails集合

hibernate - 可能隐式地将所有嵌套的域对象重新附加到Grails中的Hibernate session 中?