java.lang.ClassCastException: org.springframework.util.LinkedCaseInsensitiveMap при чтении и установке содержимого списка в объект домена - PullRequest
0 голосов
/ 16 мая 2019

Я работаю в весеннем периодическом приложении. Мне нужно получить список элементов из ItemWriter объекта и установить его каждый список в соответствующий объект домена и сохранить его в БД Mongo. Но когда я пытаюсь получить список из объекта профиля от автора, он содержит все данные в требуемом списке. Когда я пытаюсь присвоить его соответствующему объекту домена, я получаю сообщение об ошибке. Я не могу получить какие-либо данные из списка внутри profileDTO.

Я пытался несколькими способами получить данные списка и установить их в соответствующие объекты домена. Но каждый раз, когда он присваивается классу домена, исключение составляет java.lang.ClassCastException: org.springframework.util.LinkedCaseInsensitiveMap

Я также прошел по ссылке , но не получил ее. Я использую весеннюю версию 5.1.2. Пожалуйста, помогите мне решить эту проблему. ниже приведен фрагмент кода

  1. ProfileDTO, имеющий список DueDiligenceDTO, который передается в ItemWriter. Которые содержат как данные profileDTO, так и данные DueDiligenceDTO. Нет нулевых указателей.

    @Data
    Builder
    @AllArgsConstructor
    @Document(value= "Profile")
    public class ProfileDTO {        
        private long profileId;         
        private LocalDateTime reviewDate;           
        private int tierLevelNumber;  
        private List<DueDiligenceDTO> dueDiligences;            
    }
    
  2. DueDiligenceDTO

    @Data
    @NoArgsConstructor        
    public class DueDiligenceDto{        
        private String categoryCode;        
    } 
    

    А у писателя класс, у меня есть:

    public class ProfileWriter implements ItemWriter<ProfileDTO> {    
        @Override
        public void write(List<? extends ProfileDTO> profile) throws Exception {        
            riskProfile.stream().forEach(risk -> setProfile(risk));
        }
    
        private void setProfile(ProfileDTO prop) {
            List<DueDiligence> DueDiligences = new ArrayList<>();
    
            for(DueDiligenceDTO diligenceDetails :  prop.getDueDiligences()) {
                List<DueDiligenceDetailDTO>  dueDiligenceDtlList= diligenceDetails.getDueDiligenceDetails();
                if(null!=dueDiligenceDtlList && !dueDiligenceDtlList.isEmpty()) {
                    for(DueDiligenceDetailDTO detailDTO:dueDiligenceDtlList) {               
                        // then, need to set detailDTO into separate domain object and
                        // set diligenceDetails into separate domain object.
                     }
                 }
            }
        }
    }
    

    В for(DueDiligenceDTO diligenceDetails : prop.getDueDiligences()) ->
    Ошибка трассировки стека: java.lang.ClassCastException: org.springframework.util.LinkedCaseInsensitiveMap cannot be cast to com.data.profile.dto.DueDiligenceDetailDTO

    Пожалуйста, помогите мне, как решить эту проблему.

1 Ответ

0 голосов
/ 16 мая 2019

Согласно сообщению об ошибке вы пытаетесь присвоить объекту LinkedCaseInsensitiveMap переменной DueDiligenceDetailDTO
общий журнал ошибок и код, чтобы я мог сказать вам, где именно вам нужно изменить.

...