无法更新为DynamoDb中的现有值

时间:2014-11-30 16:07:03

标签: java amazon-web-services amazon-dynamodb

我在dynamodb中有一个表,其中键作为单词,值为cou。 word是我的哈希键,cou是属性键。我试图将我的一个单词值更新为另一个值。我得到了这个例外。

com.amazonaws.AmazonServiceException: The provided key element does not match the schema

我正在做的是在下面的代码中。有什么建议。

java.util.Map<String, AttributeValue> item = new HashMap<String, AttributeValue>();
            item.put("word", new AttributeValue().withS("TimeZone"));

            java.util.Map<String, AttributeValue> expressionAttributeValues = new HashMap<String, AttributeValue>();
            expressionAttributeValues.put(":val1", new AttributeValue().withN("1"));
            expressionAttributeValues.put(":val2", new AttributeValue().withN("12"));

            ReturnValue returnValues = ReturnValue.ALL_NEW;

            UpdateItemRequest updateItemRequest = new UpdateItemRequest()
                .withTableName(tableName)
                .withKey(item)
                .withUpdateExpression("add cou :val1 set NewAttribute=:val2")
                .withExpressionAttributeValues(expressionAttributeValues)
                .withReturnValues(returnValues);       

            UpdateItemResult result = client.updateItem(updateItemRequest);

1 个答案:

答案 0 :(得分:1)

你提到“单词”是你的键,“cou”是你的“属性键”。我假设属性键你的意思是范围键。如果模式中同时包含哈希和范围键,则需要在键哈希映射(“items”)中指定它们,不能仅使用哈希键进行更新。