GG.*_*GG. 9 java amazon-web-services amazon-dynamodb
我想查询DynamoDB与帮助DynamoDBMapper在Java中既hashKey和rangeKey.但我没有得到所有结果,它只返回它的一部分.我的代码看起来像:
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;
}
Run Code Online (Sandbox Code Playgroud)
MyObj使用DynamoDB注释正确注释.所以我能够保存对象,但检索只返回部分结果.
的文件查询中DynamoDBMapper说:
查询方法返回"延迟加载"集合.也就是说,最初它只返回一页结果.它在需要时为下一页进行服务调用.
现在的问题是,如何告诉映射器进行服务调用或需要一个页面,所以它加载所有页面(实际上是所有条目)?
DynamoDBMapper类的Amazon DynamoDB文档中的Java代码段在这里有点不幸(虽然技术上是正确的),类DynamoDBMapper的AWS SDK for Java API文档在这方面(自然)更精确,请参阅方法query():
public <T> PaginatedQueryList<T> query(Class<T> clazz,
DynamoDBQueryExpression queryExpression)
Run Code Online (Sandbox Code Playgroud)
所以返回的类型实际上是Class PaginatedQueryList:
List接口的实现,表示AWS DynamoDB中查询的结果.当用户执行需要它们的操作时,按需加载分页结果.某些操作(例如size())必须获取整个列表,但是在可能的情况下逐页延迟获取结果.[强调我的]
也就是说,你真的不需要在正常使用期间显式加载任何东西,只要它是由延迟加载实现隐式处理的PaginatedQueryList<T>; 但是,如果出于某种原因需要,您可以通过需要访问整个集合的操作来触发它,明确提到的size()方法显然是其中之一.
| 归档时间: |
|
| 查看次数: |
12147 次 |
| 最近记录: |