Java 使用DTO保存实体
我有实体应用程序和实体Gas的OneToMany realitionship,并且Gas实体与StatusHistory实体有自己的OneToMany关系,我在通过一个请求保存此实体时遇到问题,我的请求示例Java 使用DTO保存实体,java,spring,dto,Java,Spring,Dto,我有实体应用程序和实体Gas的OneToMany realitionship,并且Gas实体与StatusHistory实体有自己的OneToMany关系,我在通过一个请求保存此实体时遇到问题,我的请求示例 { "applicationDate" : "2018-03-29T13:34:00.000", "gases" : [ { "statusHistories" : [
{
"applicationDate" : "2018-03-29T13:34:00.000",
"gases" : [
{
"statusHistories" : [
{
"comment": "string",
"status": "NEW",
"statusDate": "2019-11-25"
}
],
"codeId" : 1
},
{
"statusHistories" : [
{
"comment": "string",
"status": "NEW",
"statusDate": "2019-11-25"
}
],
"codeId" : 1
}
]
}
我正在使用DTO保存这个实体,我尝试了保存到DB的方法,但它工作不正确,因为它有很多迭代抛出列表,它对我有效,而我只有两个实体,添加第三个保存statusHistory 4次,而不是请求中的两次,我理解这是因为迭代太多,但我在如何正确地做这件事上结巴了:
/**
* Save a Application.
*
* @param applicationDTO the entity to save.
* @return the persisted entity.
*/
public ApplicationDTO save(ApplicationDTO applicationDTO) {
log.debug("Request to save ApplicationDTO : {}", applicationDTO);
Application application = applicationMapper.toEntity(applicationDTO);
application = applicationRepository.save(application);
List<Gas> gases = gasMapper.toEntity(new ArrayList<>(applicationDTO.getGases()));
for (Gas gas : gases) {
List<GasDTO> applicationDTOs = new ArrayList<>(applicationDTO.getGases());
for(GasDTO gasDTO : applicationDTOs) {
List<StatusHistory> statusHistories = statusHistoryMapper.toEntity(new ArrayList<>(gasDTO.getStatusHistories()));
for(StatusHistory statusHistory : statusHistories) {
statusHistory.setGas(gas);
}
statusHistoryRepository.saveAll(statusHistories);
}
gas.setApplication(application);
}
gases = petrolRepository.saveAll(gases);
application.setGases(new HashSet<>(gases));
return applicationMapper.toDto(application);
}
/**
*保存应用程序。
*
*@param applicationd将复制到要保存的实体。
*@返回持久化实体。
*/
要保存的公共应用程序(ApplicationTo ApplicationTo){
debug(“请求保存ApplicationDTO:{}”,ApplicationDTO);
Application Application=applicationapper.toEntity(applicationDTO);
application=applicationRepository.save(应用程序);
列表气体=gasMapper.toEntity(新的ArrayList(applicationTo.GetGas());
用于(气体:气体){
List applicationDTOs=newarraylist(applicationDTO.getgas());
用于(GasDTO GasDTO:applicationDTOs){
List statusHistories=statusHistoryMapper.toEntity(新的ArrayList(gasDTO.getStatusHistories());
用于(状态历史记录状态历史记录:状态历史记录){
statusHistory.setGas(气体);
}
statusHistoryRepository.saveAll(StatusHistory);
}
气体应用(应用);
}
气体=石油储存。全部储存(气体);
应用程序.setgas(新HashSet(gas));
返回applicationMapper.toDto(应用程序);
}