我有一个相当简单的java对象结构,带有注释,但不起作用。它看起来像这样:
@DynamoDBDocument
public class Job {
@DynamoDBHashKey
private String id;
@DynamoDBAttribute(attributeName = "mapping")
private Definition definition;
}
@DynamoDBDocument
public class Definition {
@DynamoDBAttribute(attributeName = "calculationMap")
@DynamoDBTypeConverted(converter = AssignmentsConverter.class)
private Map<String, Calculation> assignments;
}
dynamo 中的信息如下所示:
mapping: {
calculationMap: {
attribute1: "string representing Calculation",
attribute2: "string representing Calculation"
}
}
因此,我希望我的 java Job 对象看起来像这样:
definition: {
assignments: {
attribute1: Calculation1,
attribute2: Calculation2
}
}
但是,注释无法正确反序列化 map 。转换器代码永远不会被调用,并且我最终得到一个具有映射的作业对象,但映射中的分配字段为空。所以基本上它看起来像这样:
definition: {
assignments: null
}
转换器本身相当简单,因此除非有要求,否则我不会提供代码。但是,它不应该引起问题,因为它甚至没有被调用。
在添加 @DynamoDBAttribute
注释并更改 java 字段的名称之前,代码工作正常。虽然名称都匹配,所以我担心它可能与各种注释之间的交互有关?我真的不确定。
最佳答案
我花了几个小时绞尽脑汁试图解决这个问题,结果发现这对我来说是一个简单的错误 - 我正在查看 DynamoDB 以查看我正在提取的数据,但在某些时候我已经覆盖了它为 null 并且没有刷新。通过刷新 DynamoDB 中的 View ,我可以看到它现在为空。我将 calculationMap
重置为有效值,瞧,它按预期工作。
关于java - DynamoDB 的嵌套和组合注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253527/