У меня есть две сущности с отношениями @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???
}
}
, но какВ результате все поля связанного объекта сбрасываются, и добавляется только поле, которое я передал.как это исправить?Я хочу, чтобы все поля остались, но обновляется только одно переданное поле.