У меня есть объект с именем Absence, и я делаю Controller for Spring и тестирую его с Postman. Сейчас я делаю PUTMaping для редактирования двух полей, dateMissing и comment, дело в том, что я могу редактировать оба сразу через тело json (находя отсутствие, которое я хочу редактировать по ID) в Postman, как что:
{
"id": "3",
"dateMissing": "1574856138888",
"comment": "she/he was ill"
}
Но вот в чем проблема, когда я хочу просто отредактировать одно из этих двух полей, для другого устанавливается значение NULL, и я хочу сохранить исходное значение (не теряя его значение и не устанавливайте его в null!), если он не редактируется с JSON Body, подобным этому, за исключением комментария:
{
"id": "3",
"dateMissing": "1574856138888"
}
Вот мой код Entity Entity: (вы увидите аннотацию @JsonInclude что я думаю, что это не решение, которое я ищу ...)
@Entity
public class Absence {
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Id
@JsonView(View.Summary.class)
private int id;
@JsonView(View.SummaryWithOthers.class)
private Date dateMissing;
// @JsonInclude(value=Include.ALWAYS, content=Include.USE_DEFAULTS)
@JsonView(View.SummaryWithOthers.class)
private String comment;
@ManyToOne (fetch = FetchType.EAGER)
@JsonView(View.Summary.class)
@JoinColumn (name="student_id")
// @JsonProperty(access = Access.READ_ONLY)
private MyAppUser userStudent;
public Absence() {
}
public Absence(Date dateMissing, String comment) {
this.comment = comment;
this.dateMissing = dateMissing;
}
//getters and setters...
public Date getDateMissing() {
return dateMissing;
}
public void setDateMissing(Date dateMissing) {
this.dateMissing = dateMissing;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}
А вот мое PUT Mapping:
// Edit Absence by id
@JsonView(View.SummaryWithOthers.class)
@PutMapping("api/students/absences")
public Absence putAbsence(@RequestBody @Valid Absence absence) {
// if AbsenceRepo is not empty...
if (!myAbsenceRepository.findAll().isEmpty()) {
Absence absenceToEdit = myAbsenceRepository.findOneById(absence.getId());
absenceToEdit.setComment(absence.getComment());
absenceToEdit.setDateMissing(absence.getDateMissing());
myAbsenceRepository.save(absenceToEdit);
return absenceToEdit;
} else {
return null;
}
}
Спасибо вам всем !!