grails:即使在唯一约束之后也插入了重复的行

时间:2014-07-02 20:12:08

标签: grails duplicates unique

我可以插入多个具有相同值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}
                    }
    })

}

}

如果有其他方法可以告诉我吗? 在此先感谢!!

2 个答案:

答案 0 :(得分:1)

默认情况下,这是实现,即唯一约束不适用于可空属性。有关https://jira.grails.org/browse/GRAILS-10403此问题的参考,请参阅https://jira.grails.org/browse/GRAILS-10178问题。

答案 1 :(得分:0)

我通过在可空的字段中使用'null'值作为字符串来解决它。这只是解决方法而不是解决问题的方法。