Wie kann ich alle Elemente aus dem paginierten Ergebnis einer DynamoDBMapper-Abfrage () abrufen?

8

Ich versuche DynamoDB mit Hilfe von DynamoDBMapper in Java mit beiden HashKey abfragen und rangeKey. Aber ich bekomme nicht alle Ergebnisse, es gibt nur einen Teil davon zurück. Mein Code sieht folgendermaßen aus:

%Vor%

MyObj korrekt mit DynamoDB Anmerkungen kommentiert. So kann ich die Objekte speichern, aber das Abrufen gibt nur ein Teilergebnis zurück.

Die Dokumentation von query in DynamoDBMapper sagt:

  

Die Abfrage-Methode gibt die "Lazy-Loaded" -Auflistung zurück. Das heißt, zunächst gibt es nur eine Seite der Ergebnisse zurück. Es ruft bei Bedarf einen Service für die nächste Seite auf.

Nun ist die Frage, wie der Mapper zu sagen, einen Service Anruf zu tätigen oder dass eine Seite benötigt wird, so lädt er alle Seiten (effektiv alle Einträge)?

    
GG. 29.05.2012, 17:58
quelle

1 Antwort

9

Das Java-Code-Snippet innerhalb der Amazon DynamoDB Dokumentation für die DynamoDBMapper-Klasse ist ein bisschen unglücklich hier (obwohl technologisch korrekt), die AWS SDK für Java API-Dokumentation für Klasse DynamoDBMapper ist (natürlich) genauer in dieser Hinsicht, siehe Methode query () :

%Vor%

Der zurückgegebene Typ ist also tatsächlich Class PaginatedQueryList :

  

Implementierung der List-Schnittstelle, die die Ergebnisse von darstellt   eine Abfrage in AWS DynamoDB. Paginierte Ergebnisse werden bei Bedarf geladen   Der Benutzer führt eine Operation aus, die sie erfordert. Einige Operationen,   wie size (), muss die gesamte Liste abrufen , aber die Ergebnisse sind träge   Seitenweise abgerufen, wenn möglich. [Betonung meiner]

Das heißt, Sie müssen wirklich nichts während der normalen Verwendung laden, sofern dies implizit durch die Lazy-Loading-Implementierung von PaginatedQueryList<T> ; Wenn dies jedoch aus irgendeinem Grund gewünscht ist, können Sie es durch Operationen auslösen, die Zugriff auf die gesamte Sammlung erfordern, mit dem explizit erwähnten size () Methode ist anscheinend eine von ihnen.

    
Steffen Opel 29.05.2012, 21:19
quelle