Grails 域自定义验证器检查唯一性
Grails domain custom validator check uniqueness
您能否检查 Grails 域中自定义验证器中字段的组合唯一性 class?
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']
}
}
你不能。唯一约束是 DDL 约束。这意味着 Grails/Hibernate 将在您的应用程序启动时在您的数据库架构中创建一个唯一索引,因此约束保持不变。验证器约束只是一个闭包,每次验证域 class 时都会在运行时执行。
您必须自己验证唯一性,使用查找器或条件检查数据库中的实体,如果唯一性条件已经存在,则拒绝并报错。在您的查找器中,不要忘记排除您正在验证的记录。
您能否检查 Grails 域中自定义验证器中字段的组合唯一性 class?
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']
}
}
你不能。唯一约束是 DDL 约束。这意味着 Grails/Hibernate 将在您的应用程序启动时在您的数据库架构中创建一个唯一索引,因此约束保持不变。验证器约束只是一个闭包,每次验证域 class 时都会在运行时执行。
您必须自己验证唯一性,使用查找器或条件检查数据库中的实体,如果唯一性条件已经存在,则拒绝并报错。在您的查找器中,不要忘记排除您正在验证的记录。