2012-04-04 16 views
1
params.max = Math.min(params.max ? params.int('max') : 2, 100) 
orders=OrderInfo.createCriteria().listDistinct() 

ページネーションでは、例としてリストするためにパラメータを渡す必要があります。 Post.list(params)。どうすればここに渡すことができますか?私は試しましたが、エラーを出します。基準戻り値にページ番号を追加したい

また、私が得る総数も必要です。 しかし、私は

orders=OrderInfo.createCriteria().listDistinct() 

でのparamsを設定することはできませんよPLSのは、あなたがlistメソッドの最初のパラメータとしてのparamsを渡す場合は、メソッドgetTotalCount()を持ってPagedResultListを取得し、正しいコードに

+0

はまた、我々はPost.count()で合計を取得し、私は)(orders.sizeでここにしようとしたそのこの値を取っていない – nandini

答えて

7

を示唆しています。これにより、インスタンスの総数を取得できます。

params.max = Math.min(params.max?.toInteger() ?: 25, 100) 
params.offset = params.offset ? params.offset.toInteger() : 0 

def orderInfoCriteria = OrderInfo.createCriteria() 
def results = orderInfoCriteria.list(params) { // your criteria code ... } 
log.debug "Getting ${results.size()} order infos of ${results.totalCount}" 

criteraの詳細については、docsを参照してください。

+0

ありがとう、私はまた、これらのパラメータがlistDistinctで渡すことができるかどうかを知りたがっていますか?私はそれを試みたが、それはエラーを促した。 – nandini

+0

私は 'listDistinct'の経験がありませんが、ドキュメントにはあなたを助けるかもしれないメモがあります:_" listDistinct()メソッドは、ページ設定オプションmaxResultとfirstResultでうまく動作しません。現在、HQLを使用することをお勧めします。詳細については、[このブログの投稿](http://floledermann.blogspot.de/2007/10/solving-hibernate-criterias-distinct.html)を参照してください。 – aiolos

0

Grailsの基準クエリとページネーションのparams

params.max = params?.max as Integer ?: 10 
params.page = params?.page as Integer ?: 1 
params.offset = (params.page - 1) * params.max 
params.sort = params?.sort ?: "email" 
params.order = params?.order ?: "asc" 
params.filter = params?.filter ?: "" 
params.packet = params?.packet ?: "" 

def members = Member.createCriteria().list(params) 
    { 
    or 
    { 
     if(params.filter != ""){ 
     ilike("firstName", "%" + params.filter + "%") 
     ilike("lastName", "%" + params.filter + "%") 
     ilike("email", "%" + params.filter + "%") 
     try { 
      params.filter as Long 
      eq("citizenId" , params.filter.toLong()) 
     }catch (e) { 

     } 
     ilike("mobile", "%" + params.filter + "%") 
     } 
    } 
    } 

def dataMembers = [:] 
dataMembers.data = members 
dataMembers.totalRecord = members.totalCount 
render dataMembers as JSON 

出力が

{ 
"data": [ 
    { 
     "id":1, 
     "firstName":name 
    }, 
    { 
     "id":2, 
     "firstName":name 
    } 
    ], 
"totalRecord":5 
} 
関連する問題