2016-11-04 56 views
1

我有一個DynamoDB表,其中有列。其中兩個將始終具有相同的數據類型,而一列的數據類型會有所不同。如何在使用DynamoDB時解組/編組?以下是我的DTO。如何在從DynamoDB獲取值時編組/取消組織對象類型

private Integer id; 
private String name; 
private Object value; 

它不允許直接映射「值」字段並拋出異常。

請在這方面幫助我。

回答

1

聲明字段: -

@CustomObjectFormat(separator = " ") 
    public Object getValue() { 
     return value; 
    } 

樣品CustomObjectFormat代碼: -

下面的實現使用toString()一切轉換爲字符串,並堅持在DynamoDB數據庫字符串數據類型。

@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將相應地調用自定義convertunconvert用於保存和檢索。

dynamoDBMapper.save(accounts); 

DynamoDBTypeConverted JavaDoc

相關問題