Я пытаюсь получить данные из DynamoDB на основе нескольких фильтров. (например: получите мне запись, где productNumber и colorwayNumber - «A», «B».) Ниже приведен фрагмент кода:
AmazonDynamoDB amazonDynamoDB = DynamoDBClient.getInstance().getConnection();
Map<String, HashMap<String, String>> attrVal = new HashMap<String, HashMap<String, String>>();
Map<String,String> expressionAttributesNames = new HashMap<>();
expressionAttributesNames.put("#colorwayNumber","colorwayNumber");
expressionAttributesNames.put("#productNumber","productNumber");
Map<String,AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":colorwayNumber",new AttributeValue().withS(colorwayID));
expressionAttributeValues.put(":productNumber",new AttributeValue().withS(productNumber));
QueryRequest queryRequest = new QueryRequest()
.withTableName(ConverseConstants.PLM_PRODUCT_TABLE)
.withKeyConditionExpression("#colorwayNumber = :colorwayNumber")
.withKeyConditionExpression("#productNumber = :productNumber")
.withExpressionAttributeNames(expressionAttributesNames)
.withExpressionAttributeValues(expressionAttributeValues);
QueryResult queryResult1 = amazonDynamoDB.query(queryRequest);
List<Map<String, AttributeValue>> results1 = queryResult1.getItems();
Ниже приводится исключение:
Вызывается: com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: значение, предоставленное в ExpressionAttributeNames, не используется в выражениях: keys: {#colorwayNumber} (Служба: AmazonDynamoDBv2; Код состояния: 400; Код ошибки: ValidationException;
Надеюсь, я предоставил достаточно информации. Спасибо!