使用自定义Marshaller尝试将DynamoDB查询映射到对象

class ownObject {
  private int myInteger;

  @DynamoDBMarshalling(marshallerClass = MasrshallAsInteger.class)
  @DynamoDBAttribute
  public int getMyInteger {
    return myInteger;
  }

  public void setMyInteger(int newint) {
    myInteger = newint;
  }
}


由于数据库中的值myInteger具有类型StringNumber,因此,如果我使用编组器,则SDK会引发异常:“值{N:123,}中的期望S”和“ { S:123,}“,如果我不喜欢,则放在另一个对象上。

有什么方法可以强制DynamoDB使用自定义编组器并将Key的值解析为String?还是可以使用PaginatedQueryList来解析不确定类型的数据?

最佳答案

我建议您使用Document SDK进行分页,将项目解析为Item对象,进行分页,然后将这些项目转换为您的域。

Table table = new AmazonDynamoDBClient(new DefaultCredentialsProviderChain()).getTable("ownObject");
for (Item item : table.scan()) {
    //convert item to your domain object here
}

10-06 03:29