Grails 如果我在知道我的所有数据都不存在的情况下更改域中的约束,我的数据会发生什么变化';你不能满足这个限制吗?
我是使用Grails的新手,我正在一个相当大的平台上工作,这个平台已经运行了几年 我想将我的一个域类中的一个字段更改为不再为空 当前存在的不满足该约束的数据会发生什么情况 非常感谢您的帮助Grails 如果我在知道我的所有数据都不存在的情况下更改域中的约束,我的数据会发生什么变化';你不能满足这个限制吗?,grails,constraints,Grails,Constraints,我是使用Grails的新手,我正在一个相当大的平台上工作,这个平台已经运行了几年 我想将我的一个域类中的一个字段更改为不再为空 当前存在的不满足该约束的数据会发生什么情况 非常感谢您的帮助 谢谢 您应该能够获取这些新的无效对象,但是调用save()将导致不保存或保存(failOnError:true)将导致验证异常 根据您的需要和字段表示的内容,您可以将字段设置为所有现有空值或更复杂的值(但可能更有用)-为特定字段编写自定义约束验证器,该验证器允许已持久化的对象保留null,但对字段为null的
谢谢 您应该能够获取这些新的无效对象,但是调用
save()
将导致不保存或保存(failOnError:true)
将导致验证异常
根据您的需要和字段表示的内容,您可以将字段设置为所有现有空值或更复杂的值(但可能更有用)-为特定字段编写自定义约束验证器,该验证器允许已持久化的对象保留null,但对字段为null的新保存实例引发异常
**验证器方法**
我还没有对此进行测试,但我认为类似的东西将是约束验证器的一种方式。逻辑可能会被简化,或者我还没有抓住边缘案例,但值得一试
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
}
}
}
您应该能够获取这些新的无效对象,但是调用save()
将导致不保存或保存(failOnError:true)
将导致验证异常
根据您的需要和字段表示的内容,您可以将字段设置为所有现有空值或更复杂的值(但可能更有用)-为特定字段编写自定义约束验证器,该验证器允许已持久化的对象保留null,但对字段为null的新保存实例引发异常
**验证器方法**
我还没有对此进行测试,但我认为类似的东西将是约束验证器的一种方式。逻辑可能会被简化,或者我还没有抓住边缘案例,但值得一试
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
}
}
}
欢迎,我在回答中详细介绍了验证器部分。欢迎,我在答案中添加了更多的内容来阐述验证程序部分。如果对应用程序有意义的话,在部署新版本的应用程序之前,先考虑一个SQL脚本来更新现有记录。这样,数据将为约束做好准备,您不必添加代码来处理旧记录;随着记录的更新,最终可能会过时的代码。Emmanuel,这是个好主意。我没有想到在我创建了约束之后,这些代码将如何过时。在实际实现之前,我将研究如何更新数据以满足约束。如果对应用程序有意义的话,在部署新版本的应用程序之前,先考虑一个SQL脚本来更新现有记录。这样,数据将为约束做好准备,您不必添加代码来处理旧记录;随着记录的更新,最终可能会过时的代码。Emmanuel,这是个好主意。我没有想到在我创建了约束之后,这些代码将如何过时。在实际实现之前,我将研究如何更新数据以满足约束。