AWS DynamoDBテーブルからデータを取得しています。以下のコードでは、このコードでテーブルから単一の項目をフェッチできます。com.amazonaws.AmazonServiceException:クエリキー条件がサポートされていません
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);
しかし、私はAmazonServiceException
com.amazonaws.AmazonServiceException: Query key condition not supported (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: XXXXXXXXXXXXXXXXXXXXXXXXXXX
を取得しています。
お願いします。