Java 使用DTO保存实体

Java 使用DTO保存实体,java,spring,dto,Java,Spring,Dto,我有实体应用程序和实体Gas的OneToMany realitionship,并且Gas实体与StatusHistory实体有自己的OneToMany关系,我在通过一个请求保存此实体时遇到问题,我的请求示例 { "applicationDate" : "2018-03-29T13:34:00.000", "gases" : [ { "statusHistories" : [

我有实体应用程序和实体Gas的OneToMany realitionship,并且Gas实体与StatusHistory实体有自己的OneToMany关系,我在通过一个请求保存此实体时遇到问题,我的请求示例

 {

        "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(应用程序);
}