Почему при сериализации связанного объекта все поля имеют значение null - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть две сущности с отношениями @OneToOne:

@Entity
@Table(name="daily_report")
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class DailyReport {

    private String rigPhone;
    private DailyReportInfo dailyReportInfo;

    @OneToOne(fetch = FetchType.EAGER, cascade = {CascadeType.ALL}, optional = false)
    @JoinColumn(name = "daily_report_info_id")
    public DailyReportInfo getDailyReportInfo() {
        return dailyReportInfo;
    }

    public void setDailyReportInfo(DailyReportInfo dailyReportInfo) {
        this.dailyReportInfo = dailyReportInfo;
    }

    @Column(name = "rig_phone")
    public String getRigPhone() {
        return rigPhone;
    }

    public void setRigPhone(String rigPhone) {
        this.rigPhone = rigPhone;
    }

}

@Entity
@Table(name="daily_report_info")
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class DailyReportInfo {

    private Long id;

    private DailyReport dailyReport;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @JsonIgnore
    @OneToOne(mappedBy = "dailyReportInfo", fetch = FetchType.LAZY)
    public DailyReport getDailyReport() {
        return dailyReport;
    }

    public void setDailyReport(DailyReport dailyReport) {
        this.dailyReport = dailyReport;
    }
}

И я пытаюсь проверить обновление только одного поля из объекта 'DailyReportInfo'.

public class JacksonTest {

    @Test
    public void updateFromString() {
        DailyReport dailyReport = new DailyReport();
        dailyReport.setRigPhone("123123");
        DailyReportInfo dailyReportInfo = new DailyReportInfo();
        dailyReportInfo.setId(1L);
        dailyReport.setDailyReportInfo(dailyReportInfo);

        String json = "{\"dailyReportInfo\":{\"actualDays\":11.0}}";

        ObjectMapper OBJECT_MAPPER = new ObjectMapper();
        OBJECT_MAPPER.readerForUpdating(dailyReport).readValue(json);

        assertThat(dailyReport.getRigPhone(), equalTo("123123"));           // correct
        assertThat(dailyReport.getDailyReportInfo().getId(), equalTo(1L));  // not correct = equal null, why???
    }
}

, но какВ результате все поля связанного объекта сбрасываются, и добавляется только поле, которое я передал.как это исправить?Я хочу, чтобы все поля остались, но обновляется только одно переданное поле.

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