2017-06-24 62 views
0

我剛剛使用dynamoDB的batchLoad函數。在這裏,功能的documentation 說,它需要的輸入是List<KeyPair>。但是當我使用KeyPair對象時,它會拋出參數應該是dynamodb annotated class的錯誤。DynamoDB映射器「batchLoad()」輸入

我可以使用DynamoDB類,我只設置類的hashKey and rangeKey屬性並將它們作爲參數傳遞。但現在我的用例是Class(DynamoDB註釋),我使用的是@NonNull字段。如果我必須爲此傳遞參數,我必須在其中設置垃圾值,這顯然是不可取的。任何形式的幫助/建議? 謝謝!

回答

1

這裏是工作示例。

摘要: -

  • Model類 - 應該是地圖的關鍵
  • keyPairList - 密鑰對的列表,你想找回

隨着模型類: -

Map<Class<?>, List<KeyPair>> keyPairForTable = new HashMap<>(); 
      keyPairForTable.put(Movies.class, keyPairList); 

全碼: -

public Boolean batchLoadMoviesUsingKeyPair() { 

    DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(dynamoDBClient); 

    KeyPair keyPair1 = new KeyPair(); 
    keyPair1.withHashKey(1991); 
    keyPair1.withRangeKey("Movie with map attribute"); 

    KeyPair keyPair2 = new KeyPair(); 
    keyPair2.withHashKey(2010); 
    keyPair2.withRangeKey("The Big New Movie 2010"); 

    List<KeyPair> keyPairList = new ArrayList<>(); 
    keyPairList.add(keyPair1); 
    keyPairList.add(keyPair2); 

    Map<Class<?>, List<KeyPair>> keyPairForTable = new HashMap<>(); 
    keyPairForTable.put(Movies.class, keyPairList); 

    Map<String, List<Object>> batchResults = dynamoDBMapper.batchLoad(keyPairForTable); 

    for (Map.Entry<String, List<Object>> entry : batchResults.entrySet()) { 
     System.out.println(entry.getKey()); 
     System.out.println(entry.getValue()); 
    } 

    return true; 

} 
+0

非常感謝!我已經想通了,我的錯誤,我正在使用'public Map > batchLoad(Iterable <?extends Object> itemsToGet,DynamoDBMapperConfig config)'。但會接受,因爲你的幫助,顯然這是正確的做法! – Arushi

+0

好,謝謝! – notionquest