Wie kann ich alle Elemente abzurufen, aus der paginierten Ergebnis einer DynamoDBMapper query()?
Ich versuche Abfrage DynamoDB mit Hilfe von DynamoDBMapper in Java mit den beiden hashKey und rangeKey. Aber ich bin nicht immer alle Ergebnisse, es gibt nur ein Teil davon. Mein code sieht wie folgt aus:
queryDynamoDb() {
Condition rangeKeyCondition = new Condition()
.withComparisonOperator(ComparisonOperator.GT.toString())
.withAttributeValueList(new AttributeValue().withS("0"));
DynamoDBQueryExpression queryExpression = new DynamoDBQueryExpression(
new AttributeValue().withS(prefKey));
queryExpression.setRangeKeyCondition(rangeKeyCondition);
List<MyObj> myobjs = mapper.query(MyObj.class, queryExpression);
return myobjs;
}
MyObj
richtig kommentiert mit DynamoDB Anmerkungen. Also ich bin in der Lage, speichern Sie die Objekte, aber retrieval gibt ein Teilergebnis nur.
In der Dokumentation von Abfrage innerhalb DynamoDBMapper sagt:
Die query-Methode gibt die "lazy-loaded" - Kollektion. Das heißt, zunächst gibt es nur eine Seite der Ergebnisse. Es macht einen service-Aufruf für die nächste Seite, wenn nötig.
Nun stellt sich die Frage, wie man die mapper, um einen service-Aufruf oder eine Seite benötigt, so lädt er alle Seiten (effektiv alle Einträge)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Java-code-snippet innerhalb der Amazon DynamoDB Dokumentation für die DynamoDBMapper Klasse ist etwas unglücklich hier (obwohl technisch korrekt), die AWS-SDK für Java API-Dokumentation für Klasse DynamoDBMapper ist (natürlich) genauer in dieser Hinsicht, siehe Methode query():
Deshalb ist die zurückgegebene Typ ist eigentlich ein Klasse PaginatedQueryList:
Ist, Sie wirklich nicht brauchen, um explizit laden, alles während der normalen Nutzung, soweit es implizit betreut von der lazy-loading Realisierung von
PaginatedQueryList<T>
; jedoch, wenn dies gewünscht wird-aus welchem Grund auch immer, ausgelöst werden kann es durch Operationen die Zugriff auf die gesamte Sammlung, mit der explizit genannten size() Methode als einer von Ihnen offenbar.