如何编写grails动态查找器查找0或null

如何编写grails动态查找器查找0或null,grails,gorm,dynamic-finders,Grails,Gorm,Dynamic Finders,编写搜索等于0或为null的标志的Grails dynamic finder的最佳方法是什么 范例 class Book { String title Date releaseDate String author Boolean paperback Integer isArchived } IsArrchived可为空。因此,查询要么寻找isArchived=0,要么如果它为null,它也希望它出现在结果中 编辑:乍一看,这个问题似乎我甚至没有尝试,也没

编写搜索等于0或为null的标志的Grails dynamic finder的最佳方法是什么

范例

class Book {
    String title
    Date releaseDate
    String author
    Boolean paperback
    Integer isArchived
}
IsArrchived可为空。因此,查询要么寻找isArchived=0,要么如果它为null,它也希望它出现在结果中

编辑:乍一看,这个问题似乎我甚至没有尝试,也没有浏览文档。我向你保证,我一直在研究和尝试许多不同的东西

此外,是的,数据库中的布尔标志不应为空,但此时无法更改表。本例中的开发人员依赖于在域对象中将标志的值默认设置为0。虽然这在大多数情况下都有效,但在某些情况下,标志设置为null

我已经尝试了许多不同的方法来使用动态查找器来实现这一点,但是在动态查找器中似乎不可能有两次相同的列


我会接受答案,“不,这是不可能的,使用动态查找程序,只需使用createCriteria()方法。”我只想确定这是否是不可能的。

如果您使用的Grails版本支持where功能,您可以使用它:

def results = Book.where {
    (isArchived == null || isArchived == 0)
}
您还可以使用HQL:

Book.findAll("from book b where b.isArchived IS NULL or b.isArchived = 0")

“我看不出有什么理由否决这个问题,这很清楚,也很有用。”安纳塔利奥克斯-冷静一点。如果你把问题中的信息放在编辑之后,你会得到更好的反馈。更好的问题得到更好的答案,这通常归结为更多的细节。我很抱歉,只是问题一开始看起来很简单,但令人沮丧。我试图添加更多的细节来更好地构建我的问题。您能使用Groovy truth并编写
Book.where{!isArchived}
?为了更好地表达我的问题,最佳实践是什么?因为它看起来像是一个简单的查询,所以我想使用动态查找器,但我对任何事情都持开放态度。