Значение, указанное в ExpressionAttributeNames, не используется в выражениях: keys |DynamoDB Java SDK - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь получить данные из 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;

Надеюсь, я предоставил достаточно информации. Спасибо!

...