1

ドメイン クラスInteger rankOnHighlightsにプロパティがあります。プロパティが 1 ~ 45Projectのすべてのプロジェクトを照会したいと考えています。rankOnHighlights

このために、次の Criteria クエリを発行します。

Project.withCriteria {
        'in' "rankOnHighlights",[1..45]
        maxResults 45
        order "rankOnHighlights", "desc"
    }

ただし、次のエラー メッセージが表示されます。

groovy.lang.IntRange cannot be cast to java.lang.Integer

色々と書いてみましたがダメでした。どんな提案でも大歓迎です。

前もって感謝します。

4

1 に答える 1

3

なぜうまくいかないのかわかりませんが、ドキュメントの例に似ているため、うまくいくはずです - http://grails.org/doc/latest/ref/Domain%20Classes/createCriteria.html - 作成する必要がありますhttp://jira.grails.org/browse/GRAILSの問題

ただし、これは機能します。

between "rankOnHighlights", 1, 45

編集:何が起こっているのかを理解しました。

'in' "rankOnHighlights", (1..45)

betweenしかし、悪いSQLを生成するので、私はまだ使用しinます(そして、範囲が十分に広い場合、データベースクエリパーサーには大きすぎる可能性があります):

...
where
    this_.rank_on_highlights in (
        ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
    )
...
于 2012-04-06T19:26:03.353 に答える