【发布时间】:2017-04-13 07:19:18
【问题描述】:
我正在从 AWS DynamoDB 表中获取数据。使用以下代码,我可以使用此代码从表中获取单个项目。
Condition hashKeyCondition = new Condition()
.withComparisonOperator(ComparisonOperator.GE.toString())
.withAttributeValueList(new AttributeValue().withN("1"));
Map<String, Condition> keyConditions = new HashMap<String, Condition>();
keyConditions.put("ID", hashKeyCondition);
Map<String, AttributeValue> lastEvaluatedKey = null;
do
{
QueryRequest queryRequest = new QueryRequest()
.withTableName("TABLE_NAME")
.withKeyConditions(keyConditions)
.withExclusiveStartKey(lastEvaluatedKey);
QueryResult queryResult = dynamoDBClient.query(queryRequest);
for (Map<String, AttributeValue> item : queryResult.getItems())
{
String value = item.get("column_name").getS();
Log.i("MainActivity", value);
}
lastEvaluatedKey = queryResult.getLastEvaluatedKey();
} while (lastEvaluatedKey != null);
但我正在尝试获取所有大于 ID =“1”的项目。所以我把ComparisonOperator.GE改成了ComparisonOperator.GT。以下是以下代码。
Condition hashKeyCondition = new Condition()
.withComparisonOperator(ComparisonOperator.GT.toString())
.withAttributeValueList(new AttributeValue().withN("1"));
Map<String, Condition> keyConditions = new HashMap<String, Condition>();
keyConditions.put("ID", hashKeyCondition);
Map<String, AttributeValue> lastEvaluatedKey = null;
do
{
QueryRequest queryRequest = new QueryRequest()
.withTableName("TABLE_NAME")
.withKeyConditions(keyConditions)
.withConsistentRead(true)
.withExclusiveStartKey(lastEvaluatedKey);
QueryResult queryResult = dynamoDBClient.query(queryRequest);
for (Map<String, AttributeValue> item : queryResult.getItems())
{
String value = item.get("column_name").getS();
Log.i("MainActivity", value);
}
lastEvaluatedKey = queryResult.getLastEvaluatedKey();
} while (lastEvaluatedKey != null);
但我收到 AmazonServiceExceptioncom.amazonaws.AmazonServiceException: Query key condition not supported (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: XXXXXXXXXXXXXXXXXXXXXXXXXXX。
请帮忙。
【问题讨论】:
标签: android amazon-web-services amazon-dynamodb