您可以在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/

10-11 12:38
查看更多