Во время сохранения внешний ключ дочернего объекта не сохраняется автоматически для полезной нагрузки application/xml-запроса
Во время сохранения внешний ключ дочернего объекта не сохраняется для полезной нагрузки application/xml-запроса. Но прекрасно работает с входными данными json при использовании @JsonBackReference в dto.
// Основной объект
@Entity
@Table(name="REQUEST")
public class MsaDisabScreenRequest implements Serializable {
@Id
@Column(name="REQUEST_ID")
private long requestId;
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY, mappedBy="msaDisabScreenRequest")
private Set<ReqDetail> disabilities;
}
Детская сущность
@Entity
@Table(name="REQ_DETAILS")
public class ReqDetail implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="MAP_ID")
private long mapId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="REQUEST_ID")
privateRequest msaDisabScreenRequest;
}
Это то, что я использую для отображения.
// Main Dto
import com.fasterxml.jackson.annotation.JsonManagedReference;
@XmlRootElement(name="DisabilityRequest")
@XmlAccessorType(XmlAccessType.FIELD)
public class MsaDisabScreenRequestDto implements Serializable {
private static final long serialVersionUID = 1L;
private long requestId;
@NotNull(message="{disabilities.required}")
@JsonManagedReference // when added works json payload
private Set<DetailDto> disabilities;
}
// Child Dto
import com.fasterxml.jackson.annotation.JsonBackReference;
@XmlRootElement(name="disabilities")
@XmlAccessorType(XmlAccessType.FIELD)
public class MsaDisabScreenReqDetailDto implements Serializable {
private static final long serialVersionUID = 1L;
private long mapId;
@JsonBackReference // when added works json payload
private RequestDto msaDisabScreenRequest;
}
сохранить код, который использует репозиторий jpa для сохранения.
// mapping
Request request = mapper.map(requestDto,Request.class);
Request Res = msaRepository.save(request);
Здесь, поскольку @JsonBackReference используется (я предполагаю) для полезной нагрузки запроса JSON, request_Id сохраняется в дочерней таблице. Но с полезной нагрузкой xml идентификатор запроса пуст.
Что будет причиной такого поведения? Есть ли какая-нибудь аннотация @JsonBackReference для полезной нагрузки XMl? Какое будет другое решение?