如果我在知道我的所有数据都不满足该约束的情况下更改域中的约束,我的数据会发生什么情况?
What will happen to my data if I change a constraint in my domain knowing that all of my data doesn't satisfy that constraint?
我是 Grails 的新手,我在一个相当大的平台上工作 运行 几年了。
我想将我的域之一 类 中的字段之一更改为不再可为空。
当前存在的不满足该约束的数据会发生什么情况?
非常感谢帮助,
谢谢!
您应该能够获取这些新的无效对象,但是对 save()
的调用将导致 non-save 或 save(failOnError: true)
将导致 ValidationException
。
根据您的需要和字段代表的内容,您可以将字段设置为适用于所有现有空值或更复杂(但可能更有用)的东西 - 为特定字段编写自定义约束验证器,允许对象具有已经被持久化以保留 null 但对于字段为 null 的新保存实例抛出异常。
** 验证器方法 **
我还没有对此进行测试,但我认为 类似 这将是约束验证器的一种方式。逻辑可能会减少 and/or 我还没有发现边缘情况,但值得一试。
Integer someField
someField validator: { val, obj ->
// new objects must have a non-null
if(!obj.id) {
return val != null
} else {
// if field has changed and changed to null
if (obj.isDirty('someField') && val == null) {
return false
} else {
return true
}
}
}
我是 Grails 的新手,我在一个相当大的平台上工作 运行 几年了。
我想将我的域之一 类 中的字段之一更改为不再可为空。
当前存在的不满足该约束的数据会发生什么情况?
非常感谢帮助,
谢谢!
您应该能够获取这些新的无效对象,但是对 save()
的调用将导致 non-save 或 save(failOnError: true)
将导致 ValidationException
。
根据您的需要和字段代表的内容,您可以将字段设置为适用于所有现有空值或更复杂(但可能更有用)的东西 - 为特定字段编写自定义约束验证器,允许对象具有已经被持久化以保留 null 但对于字段为 null 的新保存实例抛出异常。
** 验证器方法 **
我还没有对此进行测试,但我认为 类似 这将是约束验证器的一种方式。逻辑可能会减少 and/or 我还没有发现边缘情况,但值得一试。
Integer someField
someField validator: { val, obj ->
// new objects must have a non-null
if(!obj.id) {
return val != null
} else {
// if field has changed and changed to null
if (obj.isDirty('someField') && val == null) {
return false
} else {
return true
}
}
}