0

我正在尝试扫描将地图列表作为属性值的 DynamoDB 表。

DynamoDB 表:

{
  "Name": "n",
  "Accounts": [
    {
      "address": "a",
      "name": "b"
    },
    {
      "address": "c",
      "name": "d"
    }
}

目标 Java 对象:

@DynamoDbBean
public class Target {
 public String Name;
 public List<HashMap<String,String>> Accounts;

 //getters setters
   @DynamoDbPartitionKey
    public String getName() {
        return Name;
    }
}

我收到以下错误:

java.lang.IllegalStateException: Converter not found for EnhancedType(java.util.List<java.util.HashMap<java.lang.String, java.lang.String>>)

我知道这种嵌套结构不支持 out-ob-box 所以我需要提供一个转换器来告诉它如何将 DynmaoDB 对象映射到我的 java 类。

我已经开始实现一个 StaticTableSchema 但是我不知道如何申请我的案例:

      final StaticTableSchema<Target> build = StaticTableSchema.builder(TargetCompany.class).newItemSupplier(TargetCompany::new)
     .addAttribute(String.class, a ->a.name("Name").getter(TargetCompany::getName).setter(TargetCompany::setName))
.addAttribute(EnhancedType.listOf(EnhancedType.mapOf(String.class,String.class)), a->a.name("Accounts") ??????
.setter(TargetCompany::setAccounts)

还有一些我可以实现的转换器接口,但是在这一点上我被卡住了。我使用的是 Java SDK v2,所以我通常会找到 v1 的示例,但它们仍然只适用于原始类型,而不是像我这样的复杂情况。

知道如何将我的 DynamoDB 属性值映射到我的 Java 对象吗?

谢谢

4

0 回答 0