使用Grails我可以执行以下操作来查询db:
...
channel.findAllByTitle("CNN")
..
and
channel.findAllByDateBetween(new Date(), new Date() + 2)
..
但是如何在findWhere方法中将两者结合起来?
channel.findAllWhere(title: "CNN", ... )
答案 0 :(得分:1)
我不在我的工作站,(并且不能验证这是正确的)但是从文档中看起来你应该能够通过使用布尔'And'作为动态查找器的一部分来实现这一点。
检查此页面底部:http://grails.org/doc/1.3.7/ref/Domain%20Classes/findAllBy.html 在这里,在“布尔逻辑”下:http://grails.org/doc/latest/guide/single.html#5.4.1 Dynamic Finders
这样的事情可能有用:
channel.findAllByTitleAndDateBetween("CNN", new Date(), new Date() + 2)
否则,标准应该做你想要的。我注意到你提到想要使用findAllWhere(而不是findAllBy),但我假设你关心的是结果集。随意纠正我。
答案 1 :(得分:0)
假设您使用的是Grails 2(目前在RC3),您可以尝试使用新的'where' method:
def titleQuery = channel.where {
title = "CNN"
}
Channel channel = titleQuery.find()
或
def betweenQuery = channel.where {
(date >= new Date() && date <= new Date() + 2)
}
def results = betweenQuery.list(max: 10)
答案 2 :(得分:0)
我认为您不能使用动态查找器执行此操作,但您可以使用此类条件查询来执行此操作
Channel.withCriteria {
eq('title', 'CNN')
'between'('date', new Date(), new Date() +1)
}