基準として次の 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 を破り、OR ごとに複数の AND が許可されていないため、結果は正しくありません!
結果は次のとおりです(私のデータの場合):
textOrders.size() == 6
textOrders.totalCount == 2
結果は次のようになります(私のデータの場合):
textOrders.size() == textOrders.totalCount
これを修正または回避するためのアイデアはありますか? 結果のサイズが totalCount よりも大きいのはどうしてでしょうか? このためにjiraの問題を追加しました:http://jira.grails.org/browse/GRAILS-7783