我正在尝试扫描将地图列表作为属性值的 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 对象吗?
谢谢