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 ничего не вернуть. Я хочу вернуть созданный элемент, чтобы установить правильный заголовок location в ответе HTTP 201.

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

Как это сделать? Какие-либо предложения? Конечно, я мог бы создать id на клиенте, но я не хочу этого делать, потому что для решения проблемы потенциальной атомарности нужна дополнительная логика на стороне клиента и сервера.

Я использую aws-java-sdk-dynamodb в версии 1.11.86.

ответ

1

Ничего, я понял, как это сделать. Метод .save() обновляет ссылку объекта. После вызова mapper.save(event); свойство id заселено и имеет его значение.

Так способ получить его работу просто:

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

Вот именно!

+0

Событие, которое возвращается, не является тем, которое находится в базе данных. – BinaryShrub

Смежные вопросы