2016-11-04 8 views
1

私はカラムを持つDynamoDBテーブルを持っています。そのうちの2つは常に同じデータ型を持ち、一方の列のデータ型は変わります。 DynamoDBを使用しているときに、どのようにアンマーシャリング/整列することができますか?以下は私のDTOです。DynamoDBから値を取得する際に、オブジェクトタイプをマーシャリング/アンマーシャリングする方法

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

「値」フィールドを直接マップして例外をスローすることはできません。

この点で私を助けてください。

答えて

1

フィールドを宣言として: -

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

サンプルCustomObjectFormatコード: -

実装以下の文字列にすべてを変換してDynamoDBのデータベース内の文字列データ型として永続化するtoString()を使用します。

@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

関連する問題