我正在尝试使用@DynamoDBDocument 保存 List<CustomObject>
,但它给了我一个 DynamoDBMappingException:无法取消转换属性。
这是我的实体类的样子 -
@lombok.Data
@DynamoDBTable(tableName = "carTable")
public class Car {
@DynamoDBHashKey(attributeName = "name")
private carName;
@DynamoDBRangeKey(attributeName = "model")
private carModel;
@DynamoDBAttribute(attributeName = "manufacturers")
private List<Manufacturer> manufacturers;
}
制造商类看起来像 -
@lombok.Data
@DynamoDBDocument
public class Manufacturer {
@DynamoDBAttribute
private String manufacturerName;
}
当使用此实体并将值保存到表中时,它会正确保存为 JSON,但在检索它时会抛出异常 -
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: Car[manufacturers]; could not unconvert attribute
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperTableModel.unconvert(DynamoDBMapperTableModel.java:271)
[junit] at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.privateMarshallIntoObject(DynamoDBMapper.java:456)
[junit] at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.load(DynamoDBMapper.java:422)
[junit] at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.load(DynamoDBMapper.java:433)
[junit] at com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper.load(AbstractDynamoDBMapper.java:85)
我在这里缺少什么,我需要在这里添加某种 TypeConverter 或 Marshaller 吗?
最佳答案
需要无参数构造函数来取消转换属性,将 @lombok.NoArgsConstructor 添加到 Manufacturer 类解决了我的问题。
关于java - 无法从 DynamoDB 加载数据,因为 List<Object> 类型的属性无法未转换并使用@DynamoDBDocument 保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45371805/