Мне интересно, как лучше всего использовать метод PUT для обновления определенного свойства объекта, хранящегося в БД.
Давайте рассмотрим, например, следующий json, полученный на контроллере покоя:
{"id":1, "surname":"Doe"}
Сохраненная нами сущность выглядит примерно так:
public class Employee {
Long id;
String name;
String surname;
Date createdAt;
Date updatedAt;
}
Я упустил аннотации для простоты.
Чего я хотел бы добиться, так это того, что на RestController я получаю что-то вроде этого:
@PutRequest
public Employee updateEmployee(@RequestBody Employee employee) {
repo.saveAndFlush(employee);
}
Итак, если я сделаю это, то существующие поля для name
и отметок времени будут установлены в ноль, поскольку предоставленная сущность не содержит таких полей.
Мне интересно, есть ли способ выполнить следующие действия:
- Загрузить объект с идентификатором, указанным в БД
- Обновите поля, указанные в Json / Request Body.
- Сохранить обновленную сущность -> Это можно сделать так же, как я показал в коде.
Мне известно, что существуют @JsonIdentity и @JsonIdentifyreference (alwaysAsId = true), которые я использую вместе с распознавателями для извлечения данных из БД для извлечения вложенной сущности, где предоставляется только идентификатор, а не сама сущность.