私が照会しているエンティティは、HashKey
& 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)
は、Data:
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);
任意の手がかり?
あなたは(最終的に凝縮)スキーマと容易にするために、クエリを実行するコードの断片を追加してもらえ分析?ありがとう! –
質問を編集して追加しました。ありがとう! –
"if(ranges == null)"がありますが、テーブルに範囲キーがある場合は値が必要です。あなたはそれを省略できません。 –