编写正在搜索等于 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/