Как сохранить значение в поле json, которое я не хочу изменять - PullRequest
1 голос
/ 15 апреля 2020

У меня есть объект с именем 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;
        }
    }

Спасибо вам всем !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...