编写正在搜索等于 0 或为 null 的标志的 Grails 动态查找器的最佳方法是什么?

例子

class Book {
    String title
    Date releaseDate
    String author
    Boolean paperback
    Integer isArchived
}

isArchived 可以为空。所以查询要么寻找 isArchived = 0 要么如果它是 null 它也希望它在结果中。

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

另外,是的,数据库中的 bool 标志不应该为空,但此时无法更改表。在这种情况下,开发人员依赖于在域对象中默认将标志的值设置为 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")

关于grails - 如何编写寻找 0 或 null 的 grails 动态查找器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20552876/

10-10 06:47