我有一个来自之前使用 SDK v1 实现的 dynamodb 项目 UserOrders:
@Getter
@Setter
public class UserOrders {
@DynamoDBHashKey
private String userId;
@DynamoDBAttribute
private HashMap<String, Double> orders;
}
我只是使用@DynamoDBAttribute来映射订单字段。
现在我正在从 SDK v1 迁移到 V2。
用户订单更改为:
@Getter
@Setter
@DynamoDbBean
public class UserOrders {
private String userId;
private HashMap<String, Double> orders;
@DynamoDbPartitionKey
public String getUserId() {
return this.userId;
}
}
但是当我使用增强型客户端和 .query() 方法获取项目时,我收到错误:
java.lang.IllegalStateException: Converter not found for EnhancedType(java.util.HashMap<java.lang.String, java.lang.Double>)
我该如何解决这个问题? 我应该创建一个专用转换器吗?
在类中使用 Map 而不是 HashMap:
@Getter
@Setter
@DynamoDbBean
public class UserOrders {
private String userId;
private Map<String, Double> orders;
@DynamoDbPartitionKey
public String getUserId() {
return userId;
}
}