2017-01-31 74 views
0

對於簡單的Java REST-API,我創建了一個保存函數來將我的模型保存到DynamoDB表中。DynamoDBMapper:如何獲取保存的項目?

該車型採用的是自動生成的範圍鍵,你可以在這裏看到:

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

    //... 
} 

不幸的是,在DynamoDBMappers .save() method不返回任何東西。我想返回創建的項目,以在我的201 HTTP響應中設置正確的location標題。

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

我該如何做這項工作?有什麼建議麼?當然,我可以在客戶端上生成id,但我不想這樣做,因爲解決潛在的原子性問題需要客戶端和服務器端的其他邏輯。

我在1.11.86版本中使用aws-java-sdk-dynamodb

回答

1

沒關係,我想出瞭如何做到這一點。方法.save()更新對象的引用。在撥打mapper.save(event);後,id屬性已填充且具有其價值。

於是方式得到它的工作僅僅是:

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

That's吧!

+0

返回的事件不是數據庫中的事件。 – BinaryShrub