잘 정리해보자

JPA Error : [Ljava.lang.Object; cannot be cast to 본문

Spring/JPA

JPA Error : [Ljava.lang.Object; cannot be cast to

토마토오이 2022. 2. 11. 01:05

에러메시지 :

[Ljava.lang.Object; cannot be cast to ..

 

 

원인 :

query로 entity를 가져와 형변환 하는 경우 발생.

 

JPA에서 native query로 데이터를 가져올 때 흔히 발생하는 에러라고 한다.

반환 타입은 Object[]이며, entity 결과값을 String[]이 아닌 object[]로 받아오는 과정에 형변환 에러.

 

 

 

현재 상황은 배치에서 JPA User로 받아오고 처리하는 과정의 cast에러 발생 케이스이다.

 

reader

    private ItemReader<User> reader1() throws Exception{
        JpaPagingItemReader<User> reader = new JpaPagingItemReaderBuilder<User>()
                .pageSize(chunkSize)
                .entityManagerFactory(entityManagerFactory)
                .queryString("select id,username from User")
                .name("getTargetReader")
                .build();
        ..
    }

 

writer -> cast 에러

   private ItemWriter<User> excelWriter1() {
        return items -> {
             for(User item : items){
             }
        }

User Entity로 writer 받는 과정에, List<User>로 받는줄 알고 for문을 사용했지만, object 형변환 에러가 발생했다.

 

 

 

 

해결 : 

List<Object[]> 를 iterator로 접근해서 Object[] 으로 형변환해서 사용했다.

    private ItemWriter<User> excelWriter1() {
        return items -> {
            Iterator iter = items.iterator();
            while(iter.hasNext()){
                Object[] obj = (Object[]) iter.next();
                
                //obj[0].toString() 
                ...
            }
        };
    }

Object[] 값은 [데이터1, 데이터2, ...] 이런 형태라서 [index]로 접근해서 .to형변환으로 사용.

 

 

 

 

 

참고 :

- 원인 설명 : https://www.baeldung.com/jpa-error-java-lang-string-cannot-be-cast

https://stackoverflow.com/questions/20486641/ljava-lang-object-cannot-be-cast-to

 

[Ljava.lang.Object; cannot be cast to

I want to get value from the database, in my case I use List to get the value from the database but I got this error Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; c...

stackoverflow.com

https://jojoldu.tistory.com/337

 

Spring Batch Paging Reader 사용시 같은 조건의 데이터를 읽고 수정할때 문제

안녕하세요. 이번 시간에는 Spring Batch를 사용하시는 분들이 자주 묻는 질문 중 하나인 같은 조건의 데이터를 읽고 수정할때 어떻게 해야하는지 에 대해서 소개드리려고 합니다. 모든 코드는 Githu

jojoldu.tistory.com

 

'Spring > JPA' 카테고리의 다른 글

JPA Error - No property findComplete found for type  (0) 2022.02.21
JPA 설정과 시작  (0) 2022.02.03
Comments