在grails中创建条件时,isNull不会获取空记录

时间:2015-02-02 21:24:17

标签: grails

我使用createCriteria构建搜索结果列表。 inList工作正常但我无法使用可选的isNull工作。在数据库中,我可以看到列中有一个空值的记录,但它们没有被选中。 AdoptionAgreement域是一个枚举。 isEmpty不起作用我得到了grails例外。

   def adoptionAgreementCriteria = {
        if (params.adoptionAgreement) {
            inList('adoptionAgreement', params.list('adoptionAgreement').collect { AdoptionAgreement.valueOf(it)} )
            or {
                isNull('adoptionAgreement')
            }
        }
    }

这段代码看起来不正确?

1 个答案:

答案 0 :(得分:1)

在闭包中只有一件事传递给or,这看起来不正确。

当您使用or时,您需要在花括号中包含所有术语:

or {
    option1
    option2
}

表示:option1或option2。

The first example in the documentationor

def c = Account.createCriteria()
def results = c {
    between("balance", 500, 1000)
    eq("branch", "London")
    or {
        like("holderFirstName", "Fred%")
        like("holderFirstName", "Barney%")
    }
    maxResults(10)
    order("holderLastName", "desc")
}

这将检索余额在给定范围内的行,而分支是指定的行(持有者名称为'Fred'或持有者名称为'Barney')。