Это сервис REST XML.При сохранении значение внешнего ключа в дочерней таблице пусто.Идентификаторы @ используют последовательность, и она отлично работает.Я не добавил код генератора последовательности.
//Main Entity
------------
@Entity
@Table(name="REQUEST")
public class MsaDisabScreenRequest implements Serializable {
@Id
@Column(name="REQUEST_ID")
private long requestId; //sequence
@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; //sequence
@Column(name="TYPE_ID")
private long disabilityTypeId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="REQUEST_ID")
privateRequest msaDisabScreenRequest;
}
Это то, что я использую для отображения.
// MainDto
@XmlRootElement(name="DisabilityRequest")
@XmlAccessorType(XmlAccessType.FIELD)
public class MsaDisabScreenRequestDto implements Serializable {
private static final long serialVersionUID = 1L;
private long requestId;
@NotNull
private Set<DetailDto> disabilities;
}
// Child Dto
@XmlRootElement(name="disabilities")
@XmlAccessorType(XmlAccessType.FIELD)
public class MsaDisabScreenReqDetailDto implements Serializable {
private static final long serialVersionUID = 1L;
private long mapId;
private long disabilityTypeId;
@XmlTransient
private RequestDto msaDisabScreenRequest;
}
Это контроллер
@RequestMapping(value = ApiPath.REQUEST, method = RequestMethod.POST, produces = { "application/xml"})
public @ResponseBody ResultDecorator saveScreeningRequest(@Valid @RequestBody RequestDto requestDto) throws Exception {
.
.
.
.
}
кода сохранения, который использует репозиторий jpa для сохранения.
В код реализации добавлен только соответствующий код для сохранения
@Autowired
private OrikaBeanMapper mapper;
.
.
.
.
.
.
.
// mapping
Request request = mapper.map(requestDto,Request.class);
Request Res = msaRepository.save(request);
Это полезная нагрузка запроса, которую я отправляю
<?xml version="1.0" encoding="UTF-8" ?>
<DisabilityRequest>
<disabilities>
<disabilityTypeId>9</disabilityTypeId>
</disabilities>
</DisabilityRequest>
Здесь requestId добавляется как пустая таблица REQ_DETAILS.Все остальные пропущенные записи сохраняются.
Дайте мне знать, если вам нужна дополнительная информация.