2011-08-11 16 views
9

私は私のRPCサービスでは、このメソッドを持っている:あなたは、私はSQLの世界で、私はLIMITとして使用し、OFFSETと思われる、2つのパラメータを使用していない見ることができるように客観ページング

@Override 
    public Entrata[] getEntrate(int from, int to) { 
     List<Entrata> data = entrateDao.list(); 
     return data.toArray(new Entrata[0]); 
    } 

。 、私は

はその後、「TO」回の反復query.startCursor()を行う必要があると思います http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Cursors

は、それは完全に明確には私が今何をすべきか、私はこれを読み始めていませんページサイズ

大丈夫ですか?いくつかのスニペットで私を助けることができますか?ドキュメントから:)

答えて

15

カーソルが別の場所にチェックポイントを保存し、クエリの結果セットの「チェックポイント」を取らせ、その後、あなただけの制限/オフセット必要として、あなたは後半

を中断したところから再開あなたはlimit()offset() Objectify Queryのメソッドを使用しなければなりません。あなたはカーソルを持っているとき

ob.query(Entrata.class).limit(to - from).offset(from) 

または、::同様

String cursor = // get it from request 
Query<Entrata> query = ob.query(Entrata.class); 
Query q = query.startCursor(Cursor.fromWebSafeString(cursor)); 
q.limit(x); 
QueryResultIterator<Entrate> iterator = query.iterator() 
List<Entrate> data = // fetch data 
String newCursor = iterrator.getStartCursor().toWebSafeString() 
return new EntrataListWithCursor(data, cursor); 
+0

は効率的ではありません、申し訳ありませんが、私はすでに私がしようとしていることを知っているhttp://stackoverflow.com/questions/6861897/objectify-pagingいくつかのレコードのビルディングを処理できるアプリケーションを構築するには: - \ –

+0

カーソルが分かっている場合は、それらとの間でリミットオフセット動作を行う方法がありますか? –

+0

カーソルから始めることができます(カーソルはただのシリアライズされた位置です)。どのようにこのメソッドを使用する予定ですか? –