В моей базе данных есть таблица action
, поэтому у меня есть Action
сущность и ActionDTO
, которые в основном совпадают.
Сущность:
@Entity
@Table(name = "action")
public class Action {
@Column(name = "name")
private String name;
@Column(name = "start_date")
private Date startDate;
@Column(name = "end_date")
private Date endDate;
//setters & getters
}
DTO - это:
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ActionDTO {
private String name;
private Date startDate;
private Date endDate;
//setters & getters
}
В контроллере есть способ обновить action
таблицу:
@PutMapping(path = "/action", produces = "application/json; charset=UTF-8")
public ResponseEntity<Object> updateAction(@RequestBody ActionDTO actionDTO) {
Action action = new Action();
// setting parameters to Action entity
actionRepository.save(action);
}
В зависимости от наличия или отсутствия полей startDate
и endDate
в полезной нагрузке запроса мне нужно определить, нужно ли мне обновлять start_date
и end_date
в моей базе данных.
Так что, если запрос JSON:
{
"name" : "action name",
"startDate" : null,
"endDate" : null
}
тогда я должен обновить start_date
и end_date
поля как NULL.
Но если запрос JSON:
{
"name" : "action name"
}
тогда я не должен обновлять start_date
и end_date
и оставлять их нетронутыми.
Так можно ли определить, присутствовали ли параметры startDate
и endDate
в HTTP-запросе? Возможно, Джексон предлагает какое-то решение из коробки?