我刚刚使用dynamoDB的batchLoad函数。在这里,documentation
函数说,它输入的是List<KeyPair>
。但是当我使用KeyPair对象时,它会抛出参数应为dynamodb annotated class
的错误。
我可以使用DynamoDB类,我只设置类的hashKey and rangeKey
属性并将它们作为参数传递。但是现在我的用例是Class(DynamoDB注释),我使用的是@NonNull
个字段。如果我必须为此传递参数,我必须在其中设置垃圾值,这显然是不可取的。有什么样的帮助/建议吗?
谢谢!
答案 0 :(得分:3)
以下是工作示例。
<强>要点: - 强>
使用模型类: -
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;
}