2011-08-01 8 views
2

条件を使わずにgrailsでPagedResultListを取得する方法はありますか?私は、彼らがやや複雑で単位テストをむしろ厄介なものにするので、基準を避けたいと思っています。Grails PagedResultList

def pagedResultList = MyDomainClass.createCriteria().list(max:10, offset:0) 
                { order("id", "asc") } 

//Below does not return pagedResultList 
def aList = MyDomainClass.list(sort:"id", order:"asc", max:10, offset: 0) 

答えて

3

PagedResultList以下のコードは、単に基準ベースのクエリの結果をラップするために使用されている(あなたは、その使用in the source hereを見ることができます)。本当にそれを使用したい場合は、任意のリストを処理するので、常にちょうどinvoke the constructor directlyにすることができます。もちろんtotalCountプロパティ(おそらくあなたが興味を持っているもの)は設定されません。

ページリストの結果リストと結果の合計数を取得するというアイデアがある場合は、両方のクエリを同時に取得できる魔法はありません(上記のリンク元でPagedResultListを使用しても2クエリ)。

+1

ああ、私はそれが最初に2つのクエリを実行していたことを認識していませんでした。今私はそれについて考えている、私はそれがこれをやっている意味があると思う。唯一の方法は、SQL側ではなく、アプリ側でソートして並べ替えることです。 – Joseph

4

これは、リストを取るだけのコスト作成者がいないため、Grails 2.xで壊れているようです。比較http://grails.org/doc/2.1.0/api/grails/orm/PagedResultList.htmlhttp://docs.huihoo.com/grails/1.3.7/api/grails/orm/PagedResultList.html

+1

私は実装された(パブリック)メソッドの違いを見ることはできませんが、これは興味深いものです。あなたがしたいことに応じて、java.util.Listに基づいて独自の実装を作成し、totalCountゲッター/セッターを追加することができます。 – Joseph

+0

はい私はこれをしました。 –