J'ai besoin de créer une simple pagination d'objets, mais quand j'ai lu le manuel, j'ai découvert que Query.Settrange (5, 10); va chercher 10 objets, même lorsque seuls 5 objets sont nécessaires. P>
Y a-t-il de toute façon pour aller chercher des objets nécessaires? P>
EDIT: J'ai démarré Bounty, alors vous pouvez me montrer un exemple de code simple en Java qui fonctionne, alors je vous accepterai de répondre. P>
4 Réponses :
Vous voulez probablement regarder en utilisant curseurs a > Plutôt que de se fixer, si vous essayez de faire pagination. p>
Il y a un article sur ce sujet très sujet sur le site du moteur d'application: P>
http://code.google.com/appengine/articles/Pring.html p>
Les exemples sont en python, mais ils sont assez simples pour que vous puissiez probablement traduire à Java assez facilement. P>
Voici une implémentation Java , que je n'ai pas lu ni testé . P>
Pourquoi est-ce un problème si 10 objets sont renvoyés de la base de données? Vous serez toujours retourné que les 5 objets que vous vous souciez (les 5 premiers sont supprimés). P>
Je ne demande pas parce que je pense que la méthode Setrange est une solution qui échelle incroyablement bien, mais c'est une solution simple et raisonnable qui est plus que suffisante dans un bon nombre de cas. P>
Prévoyez-vous des tables extrêmement volumineuses ou incorporez des jointures coûteuses? Sinon, je serais tenté d'utiliser SetRange comme point de départ de votre pagination. P>
Que diriez-vous:
List<Employee> results = (List<Employee>) query.execute(); // Use the first 20 results... Cursor cursor = JPACursorHelper.getCursor(results); String cursorString = cursor.toWebSafeString(); // Store the cursorString... // ... // Query query = the same query that produced the cursor // String cursorString = the string from storage Cursor cursor = Cursor.fromWebSafeString(cursorString); query.setHint(JPACursorHelper.CURSOR_HINT, cursor); query.setRange(0, 20); List<Employee> results = (List<Employee>) query.execute(); // Use the next 20 results...