您可以在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']
}
}
最佳答案
你不能唯一约束是DDL约束。这意味着当您的应用启动时,Grails / Hibernate将在数据库架构中创建唯一索引,因此约束保持不变。验证器约束只是一个闭合,它将在每次验证您的域类时在运行时执行。
您必须使用查找程序或条件自己检查数据库中的实体,以验证唯一性,如果唯一条件已经存在,则拒绝并返回错误。在您的查找器中,不要忘记排除您正在验证的记录。
关于grails - Grails域自定义验证器检查唯一性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30534720/