Во время сохранения внешний ключ дочернего объекта не сохраняется автоматически для полезной нагрузки 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? Какое будет другое решение?

0 ответов

Другие вопросы по тегам