我可以插入多个具有相同值actionName的行:“discard”和actionParameter:“”。我想避免这种情况。
其他约束工作得很好,就像我无法插入actionName:“rate-limit”和actionParameter:“5”两次。
这是我的域类:
课程Exaaction {
String actionName
String actionParameter
static hasMany = [actionFlow:Flow]
static constraints = {
actionName(blank:false,nullable:false,inList:["discard","rate-limit","redirect"])
actionParameter(blank:true,nullable:true,unique:'actionName',validator:{val,obj ->
if(obj.actionName == 'discard' && val != null){ return false}
else if(obj.actionName == 'rate-limit')
{
Utility util = new Utility()
if(!util.validateNum(val,0,2147483647)) {return false}
}
else if(obj.actionName == 'redirect')
{
if(val == null) {return false}
Utility util = new Utility()
if(!(util.validateIp(val) || util.validateIpAndPort(val) || util.validateASAndPort(val)) ) {return false}
}
})
}
}
如果有其他方法可以告诉我吗? 在此先感谢!!
答案 0 :(得分:1)
默认情况下,这是实现,即唯一约束不适用于可空属性。有关https://jira.grails.org/browse/GRAILS-10403此问题的参考,请参阅https://jira.grails.org/browse/GRAILS-10178问题。
答案 1 :(得分:0)
我通过在可空的字段中使用'null'值作为字符串来解决它。这只是解决方法而不是解决问题的方法。