我有一个DynamoDB表,其中有列。其中两个将始终具有相同的数据类型,而一个列的数据类型将有所不同。如何在使用DynamoDB时解组/编组它。以下是我的DTO。
private Integer id;
private String name;
private Object value;
不允许直接映射"值"现场并抛出异常。
请帮助我。
答案 0 :(得分:1)
将字段声明为: -
@CustomObjectFormat(separator = " ")
public Object getValue() {
return value;
}
示例CustomObjectFormat代码: -
以下实现使用toString()
将所有内容转换为String,并在DynamoDB数据库中作为String数据类型保留。
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@DynamoDBTypeConverted(converter=CustomObjectFormat.Converter.class)
public @interface CustomObjectFormat {
String separator() default " ";
public static class Converter implements DynamoDBTypeConverter<String, Object> {
private final String separator;
public Converter(final Class<Currency> targetType, final CustomObjectFormat annotation) {
this.separator = annotation.separator();
}
public Converter() {
this.separator = "|";
}
@Override
public String convert(final Object o) {
return o.toString();
}
@Override
public Object unconvert(final String o) {
return o;
}
}
}
要保存的映射器: -
DynamoDBMapper将相应地调用自定义convert
和unconvert
进行保存和检索。
dynamoDBMapper.save(accounts);