我正在查询的实体有一个HashKey
& a RangeKey
(数字)。当我使用它batchGetItem
,我得到以下错误:Java中batchGetItem API的错误
AWS Error Code: ValidationException, AWS Error Message: One or more parameter values were invalid: Mismatching attribute types between location and schema
模式:
Table: Daily
Hash Key: CustId (String)
Range Key: Dated (Number)
数据:
CustId : VisioNerdy
Dated : 1329071400000
代码:
List<Key> fkeys = new ArrayList<Key>(); //tableName="Daily", keys=["VisioNerdy"], ranges=[1329071400000] Map<String, KeysAndAttributes> requestItems = new HashMap<String, KeysAndAttributes>(); for(int i = 0; i < keys.size(); i++) { String key = keys.get(i); if(ranges == null) fkeys.add(new Key().withHashKeyElement(new AttributeValue().withS(key))); else fkeys.add(new Key().withHashKeyElement(new AttributeValue().withS(key)) .withRangeKeyElement(new AttributeValue().withS(ranges.get(i).toString()))); } requestItems.put(tableName, new KeysAndAttributes().withKeys(fkeys)); BatchGetItemRequest batchGetItemRequest = new BatchGetItemRequest().withRequestItems(requestItems); BatchGetItemResult result = client.batchGetItem(batchGetItemRequest);
任何线索?
能否请您添加(最终凝结)架构和执行查询,以缓解代码段分析?谢谢! – 2012-02-13 09:29:43
已编辑的问题包括他们。谢谢! – 2012-02-14 02:50:42
你有“if(ranges == null)”,但如果一个Table有一个范围键,则需要一个值;你不能忽略它。 – 2012-02-14 04:49:15