içinde batchGetItem API'sinde hata Sorgulama yapılamam& a RangeKey
(Numara). ben mi batchGetItem
kullandığınızda, ben şu hatayı alıyorum:java
AWS Error Code: ValidationException, AWS Error Message: One or more parameter values were invalid: Mismatching attribute types between location and schema
Şema:
Table: Daily
Hash Key: CustId (String)
Range Key: Dated (Number)
veri:
CustId : VisioNerdy
Dated : 1329071400000
Kodu:
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);
Herhangi bir ipuçları?
Sen türü olarak sizin Hash and Range Type Primary Key aralığı özelliğini tanımlanan Numara, henüz isteğiniz için türü olarakwithS()
aracılığıyla
Dize onun özellik değerini hazırlamak var
size (sonunda özet) şema ve kolaylığı için sorgu yürütülürken kod parçası eklemek misiniz analiz? Teşekkürler! –
Sorunu, bunları içerecek şekilde düzenlediniz. Teşekkürler! –
"If (ranges == null)" ifadesine sahipsiniz, ancak bir tablo bir aralık anahtarına sahipse, bir değer gereklidir; ihmal edemezsin. –