0

Für eine einfache Java-REST-API habe ich eine Speicherfunktion erstellt, um mein Modell in einer DynamoDB-Tabelle zu erhalten.DynamoDBMapper: Wie bekomme ich einen Artikel?

Das Modell verwendet einen automatisch generierten Bereich gedrückt, wie Sie hier sehen können:

@DynamoDBTable(tableName = "Events") 
public class EventModel { 
    private int country; 
    private String id; 
    // ... 

    @DynamoDBHashKey 
    public int getCountry() { 
     return country; 
    } 
    public void setCountry(int country) { 
     this.country = country; 
    } 

    @DynamoDBRangeKey 
    @DynamoDBAutoGeneratedKey 
    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 

    //... 
} 

Leider ist das die DynamoDBMappers .save() method nichts zurückliefert. Ich möchte das erstellte Element zurückgeben, um den richtigen Header location in meiner 201 HTTP-Antwort festzulegen.

public EventModel create(EventModel event) { 
    mapper.save(event); 
    return null; 
} 

Wie kann ich das machen? Irgendwelche Vorschläge? Natürlich könnte ich die id auf dem Client generieren, aber ich möchte dies nicht tun, weil das Lösen der potentiellen Atomizitätsprobleme zusätzliche Logik auf Client- und Server-Seite benötigt.

Ich verwende die aws-java-sdk-dynamodb in Version 1.11.86.

Antwort

1

Macht nichts, ich habe herausgefunden, wie es geht. Die .save() Methode aktualisiert die Referenz des Objekts. Nach dem Aufruf mapper.save(event); ist die id Eigenschaft ausgefüllt und hat ihren Wert.

So wie es Arbeit zu bekommen, ist einfach:

public EventModel create(EventModel event) { 
    mapper.save(event); 
    return event; 
} 

Das ist es!

+0

Das Ereignis, das zurückgegeben wird, ist jedoch nicht das, das in der Datenbank ist. – BinaryShrub

Verwandte Themen