Grails FindWhere和BetweenDate

时间:2011-12-13 01:40:57

标签: grails

使用Grails我可以执行以下操作来查询db:

...
channel.findAllByTitle("CNN")
..
and
channel.findAllByDateBetween(new Date(), new Date() + 2)
..

但是如何在findWhere方法中将两者结合起来?

channel.findAllWhere(title: "CNN", ... )

3 个答案:

答案 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)    
}