2011-08-11 20 views
9

benim RPC hizmetinde bu yöntemi vardır: Eğer, bir SQL dünyada, ben LIMIT olarak kullanmak ve OFFSET hangi, iki parametre kullanmıyorum görebileceğiniz gibisomutlaştırabilir sayfalama

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

. Ben

Ardından "TO" kez yineleme bir query.startCursor() yapmak zorunda düşünüyorum http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Cursors

:

Tamamen açık şimdi ne yapmam gerektiğini, bu okumaya başladım değil sayfa boyutu.

Pekala? Bana bazı parçacıklarla yardım edebilir misin? :)

Dokümanlar

cevap

15

: Cursors, bir sorgu sonuç kümesindeki bir "kontrol noktasına" almak başka yerde kontrol noktasından depolamak ve sonra geç

sadece sınırlamak/ofset ihtiyaç olarak kaldığı yerden devam edelim Nesne Sorgulama limit() ve offset() yöntemini kullanmanız gerekir. Eğer imleç varken

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

Veya: gibi

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

verimli değil, üzgünüm, zaten deniyorum http://stackoverflow.com/questions/6861897/objectify-paging biliyoruz Birkaç kayıt değil, biyonlar işlemek için bir uygulama oluşturmak için: - \ –

+0

Eğer imleçler biliyorsanız, onlarla bir sınır-offset davranışın bir yolu var mı? –

+0

Yalnızca _already_ varsa, imleçten başlayabilirsiniz (imleç sadece bir seri hale getirilmiş konumdur). Bu yöntemi nasıl kullanmayı planlıyorsunuz? –

İlgili konular