【发布时间】:2015-05-29 16:34:43
【问题描述】:
您能否检查 Grails 域类中自定义验证器中字段的组合唯一性?
Long points
String field1
String field2
Level level
level validator {val,obj->
if(obj.points<1000){
//make sure level is unique with field 1
level unique: ['field1']
}
else{
//make sure level is unique with field 2
level unique: ['field2']
}
}
【问题讨论】:
-
您不能以这种方式指定唯一性。请记住,唯一性是在数据库级别指定的,您不能在数据库中这样做。
-
所以我必须运行一个查询并检查该组合是否已经存在?...findWhere(level:val,field1:object.field1)?//valid://error
-
是的!在这种情况下,您必须创建一个可定制的解决方案以确保您的应用程序的唯一性。请记住,如果您想要数据库中的唯一性,您将需要两个表(一个包含 Field1 + Level 的表和另一个包含 Field2 + Level 的表)。
标签: grails grails-orm