1

連鎖した名前付きクエリを使用してpagedResultListを取得しようとしていますが、失敗するようです。これをどのように達成できるかについてのヒントやヒントはありますか?

私のニーズを説明するGrailsのドキュメントから以下の変更された例を参照してください

def books = Publication.recentPublications.grailsInTitle.list(params) {
    or {
        like 'author', 'Tony%'
        like 'author', 'Phil%'
    }
}

これは常にArrayListを返します。

追加の基準を削除するか、以下のように使用すると、

def books = Publication.recentPublications.grailsInTitle.list(params)

いくつかの基準クロージャ、これを達成するためのヒントやヒントを追加したいと思いますか?

4

1 に答える 1

2

名前付きクエリでも同じ問題が発生します。これはあなたのクラスに適用される私の解決策です。それがあなたのために働くかどうかコメントしてください。

class Publication {
    //fields, constraints, etc.
    namedQueries = {
        authoredLike { String authorName ->
        if (authorName) {
            like 'author', authorName
        }
        // untested, but you get the point, please experiment
        authoredLikeMany { List<String> authors ->
            authors.each { String authorName -> like 'author', authorName }
        }
    }
}

def tonyBooks = Publication.recentPublications.grailsInTitle.authoredLike('Tony%').list(params)
def tonyAndPhilBooks = Publication.recentPublications.grailsInTitle.authoredLikeMany(['Tony%', 'Phil%']).list(params)
于 2012-11-07T11:09:36.463 に答える