0

基準として次の 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

4

1 に答える 1

0

申し訳ありませんが、これをコメントとして投稿することはできません (まだ許可されていません!)。

loggingSql = true

config.groovy のデータソース ブロックにフラグを設定し、SQL 休止状態を投稿または確認して生成されていますか? これにより、何が起こっているかについての手がかりが得られる場合があります。

ありがとう、

ジム。

于 2011-08-09T14:55:55.297 に答える