Grails createCriteria:通过一个空域类实例的字段查找对象

Dea*_*ses 11 grails grails-orm

我在Grails的createCriteria中看到了一些意想不到的行为.我有一个看起来像这样的域类:

MyDomainClass {
    AnotherDomainClass anotherDomainClass
    static constraints = {
        anotherDomainClass(nullable:true)
    }
}
Run Code Online (Sandbox Code Playgroud)

我想找到MyDomainClass的所有实例,其中anotherDomainClass为null.所以我这样做:

return MyDomainClass.createCriteria().list {
    eq('anotherDomainClass', null)
}
Run Code Online (Sandbox Code Playgroud)

但是,我一无所获.

我究竟做错了什么?我可以看到有一些数据库条目,其中ANOTHERDOMAINCLASS_ID列确实为空(或空白,我无法分辨).

我可以直接创建一个引用ANOTHERDOMAINCLASS_ID列的查询,但我还没有找到方法.

谢谢!

Der*_*ife 15

您可以使用isNull而不是使用eq

def results = MyDomainClass.withCriteria {
    isNull('anotherDomainClass')
}
Run Code Online (Sandbox Code Playgroud)

这里有一个很好的参考HibernateCriteriaBuilder Javadoc.