Я пытался написать следующий SQL-оператор в качестве критерия:
SELECT * FROM foo WHERE (a=1 AND b=1) OR (a=2 AND b=2) OR (a=3 AND b=4)
def textOrderCriteria = TextOrder.createCriteria()
textOrders = textOrderCriteria.list(max: 20, offset: 0) {
or {
and {
eq('a',1)
eq('b',1)
}
and {
eq('a',2)
eq('b',2)
}
and {
eq('a',3)
eq('b',4)
}
}
}
но это нарушает totalCount, и результат не является базовым, потому что не допускается более одного AND на OR!
Результат (по моим данным):
textOrders.size() == 6
textOrders.totalCount == 2
Результат должен быть (для моих данных):
textOrders.size() == textOrders.totalCount
Есть идеи, чтобы это исправить или обойти? Как могло случиться, что размер результата больше, чем totalCount?
Для этого я добавил проблему с jira: http://jira.grails.org/browse/GRAILS-7783