DynamoDBMapper:如何获取保存的项目?

max*_*ndt 5 java rest amazon-web-services amazon-dynamodb objectmapper

对于一个简单的 Java REST-API,我创建了一个保存函数来将我的模型保存到 DynamoDB 表中。

该模型使用自动生成的范围键,如下所示:

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

    //...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,DynamoDBMappers .save() 方法不返回任何内容。我想返回创建的项目以location在我的 201 HTTP 响应中设置正确的标头。

public EventModel create(EventModel event) {
    mapper.save(event);
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?有什么建议?当然,我可以id在客户端生成,但我不想这样做,因为解决潜在的原子性问题需要客户端和服务器端的额外逻辑。

我正在使用aws-java-sdk-dynamodbin 版本1.11.86

max*_*ndt 9

没关系,我想出了怎么做。该.save()方法更新对象的引用。调用后,mapper.save(event);id属性被填充并具有其值。

所以让它工作的方法只是:

public EventModel create(EventModel event) {
    mapper.save(event);
    return event;
}
Run Code Online (Sandbox Code Playgroud)

就是这样!