2012-10-08 22 views
2

當我在一個dynamoDB表上運行一個DeleteItemRequest時,我得到一個異常,它說「提供的密鑰大小與模式的大小不匹配」。 所有我做的是如何在dynamoDB上運行DeleteItemRequest?

DeleteItemRequest deleteRequest = newDeleteItemRequest().withTableName(dynamoDbTableName).withKey(key);

client.deleteItem(deleteRequest);

我需要指定更多的東西?我錯過了什麼嗎?

回答

2

這可能意味着傳遞給該方法的鍵不匹配表中主鍵的類型。例如,您正在傳遞數字鍵,但該表使用字符串鍵。密鑰的類型取決於創建AttributeValue時使用的方法。方法withN()創建一個數字鍵,而方法.withS()創建一個字符串鍵。

數字鍵例如:

Key key = new Key().withHashKeyElement(new AttributeValue().withN("120")); 

String鍵例如:

Key key = new Key().withHashKeyElement(new AttributeValue().withS("johndoe")); 

存在用於其它類型的方法,以及,像二值類型和集。有關更多詳細信息,請參閱javadoc for the AttributeValue class