Java でDynamoDBMapperを使用して、hashKey と rangeKey の両方を使用して DynamoDB にクエリを実行しようとしています。しかし、私はすべての結果を取得しているわけではなく、その一部のみを返します。私のコードは次のようになります:
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
DynamoDB アノテーションで適切にアノテーションが付けられます。したがって、オブジェクトを保存することはできますが、検索では部分的な結果しか返されません。
DynamoDBMapper内のクエリのドキュメントには、次のように記載されています。
query メソッドは、「遅延読み込み」コレクションを返します。つまり、最初は 1 ページの結果のみが返されます。必要に応じて次ページのサービスコールを行います。
問題は、マッパーにサービス呼び出しを行うように、またはページが必要であることを伝える方法です。そのため、すべてのページ (実質的にすべてのエントリ) をロードします。