Grails найти где и между датой - PullRequest
0 голосов
/ 13 декабря 2011

С Grails я могу сделать следующее для запроса БД:

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

но как я могу объединить оба метода findWhere?

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

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

Я не на своей рабочей станции (и не могу убедиться, что это правильно), но из документов видно, что вы должны быть в состоянии сделать это, используя логическое «И» как часть вашего динамического поиска.

Проверьте нижнюю часть этой страницы: http://grails.org/doc/1.3.7/ref/Domain%20Classes/findAllBy.html И здесь, в разделе «Логическая логика»: http://grails.org/doc/latest/guide/single.html#5.4.1 Динамические искатели

Что-то вроде этого может работать:

channel.findAllByTitleAndDateBetween("CNN", new Date(), new Date() + 2)

В противном случае критерии должны делать то, что вы хотите. Я заметил, что вы упомянули о желании использовать findAllWhere (не findAllBy), но я предполагаю, что вас волнует набор результатов. Не стесняйтесь поправлять меня.

0 голосов
/ 13 декабря 2011

Я не думаю, что вы можете сделать это с помощью динамического поиска, но вы можете сделать это с помощью критерия запроса, подобного этому

Channel.withCriteria {
  eq('title', 'CNN')
  'between'('date', new Date(), new Date() +1)    
}
0 голосов
/ 13 декабря 2011

Предполагая, что вы используете Grails 2 (в настоящее время на RC3), вы можете попробовать что-то с новым 'where' методом :

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...