2016-11-04 3 views
1

Ich habe eine DynamoDB-Tabelle, in der ich Spalten habe. Zwei von ihnen haben immer denselben Datentyp, während der Datentyp einer Spalte variiert. Wie kann ich Marshall/Marshall bei der Verwendung von DynamoDB abmelden? Unten ist mein DTO.So Marshall/Unmarshall Objekttyp beim Abrufen von Werten aus DynamoDB

Es ist nicht erlaubt, direkt "Wert" Feld zuordnen und eine Ausnahme werfen.

Bitte helfen Sie mir in dieser Hinsicht.

Antwort

1

das Feld erklären, wie: -

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

Probe CustomObjectFormat Code: -

Die unten Implementierung toString() verwendet alles in String zu konvertieren und als String-Datentyp in DynamoDB Datenbank bestehen.

@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; 
     } 
    } 
} 

Mapper zu speichern: -

DynamoDBMapper speichern und Abrufen der benutzerdefinierten aufruft convert und unconvert entsprechend für.

dynamoDBMapper.save(accounts); 

DynamoDBTypeConverted JavaDoc

Verwandte Themen