使用自定义Marshaller
我尝试将DynamoDB查询映射到对象
class ownObject {
private int myInteger;
@DynamoDBMarshalling(marshallerClass = MasrshallAsInteger.class)
@DynamoDBAttribute
public int getMyInteger {
return myInteger;
}
public void setMyInteger(int newint) {
myInteger = newint;
}
}
由于db中的值myInteger
包含String
和Number
两种类型,因此SDK会抛出异常:“预期的值为{N:123,}的S” 如果我不使用marshaller和“预期N值{S:123,}”,如果我不这样做。
有没有办法强制DynamoDB使用自定义编组器并将Key的值解析为String?或者有没有其他方法来解析未确定类型的数据,但使用PaginatedQueryList
?
答案 0 :(得分:1)
我建议您使用Document SDK进行分页,将项目解析为Item对象,paginate,然后将这些项目转换为您的域名。
Table table = new AmazonDynamoDBClient(new DefaultCredentialsProviderChain()).getTable("ownObject");
for (Item item : table.scan()) {
//convert item to your domain object here
}