Es scheint, dass ein Problem mit dem Format der in DynamoDB gespeicherten Daten besteht.
Zunächst einmal das ist, was DynamoDB erwartet:
Boolean
Ein Boolean-type-Attribut speichern kann entweder wahr oder falsch.
Überprüfen Sie Daten in Tabellen tatsächlich entspricht dies. Haben Sie Artikel, die nicht über das Attribut "isFlagged" verfügen? Sind einige von ihnen null?
Wenn benötigen Sie leere Werte/NULL-Werte Boolesche Werte Sie Ihre benutzerdefinierten Konverter implementieren müssen konvertieren, die eine lächerlich einfache Schnittstelle hat:
// Converts between String (DynamoDB side) and Boolean (application side)
public class MyBooleanConverter implements DynamoDBTypeConverter<String, Boolean> {
// Add any checks/conversions you see fit:
@Override
// Convert to DynamoDB attribute
public String convert(Boolean object) {
return object.toString();
}
@Override
// Convert from DynamoDB attribute
public Boolean unconvert(String object) {
// Parse as you see necessary here
return Boolean.parse(object);
}
}
Jetzt Ihr Attribut mit Ihrem Konverter mit Anmerkungen versehen:
@DynamoDBConvertedBool(converter = MyBooleanConverter.class)
@DynamoDBAttribute(attributeName = "isFlagged")
public Boolean getFlagged() {
...
}
PS
Sie brauchen nicht einen Attributnamen angeben, wenn Ihre Methode Name Ihre Attributnamen übereinstimmt:
@DynamoDBConvertedBool(converter = MyBooleanConverter.class)
public Boolean isFlagged() {
...
}
genug sein sollte. Auch boolesche Getter sollten das isX Format haben.
Eigentlich habe ich nur 2 Datensätze in der Tabelle und beide haben Werte. Wenn also alle Datensätze gültige Werte haben, sollte es kein Problem geben? – maddie
Sollte in Ordnung sein, solange Sie Daten speichern, die von Ihrem Konverter korrekt analysiert werden können. Stellen Sie sicher, dass der Konverter Daten speichert, die er analysieren kann, und dass andere Anwendungen, die Zugriff auf die Tabelle haben, Daten im selben Format generieren. –
Ich würde keinen benutzerdefinierten Konverter benötigen, wenn mein Datenbankattribut boolesch ist und das Java-Objektattribut auch boolesch ist, richtig? Oder brauche ich noch einen benutzerdefinierten Konverter? – maddie