본문 바로가기
IT 개발/에러

[에러] nested exception is org.apache.ibatis.builder.BuilderException: The expression '...' evaluated to a null value.

by Dev.Jeon 2023. 2. 7.
반응형

에러메시지

ERROR [com.open.cmmn.service.impl.CmmnServiceImpl] (transfer) nested exception is org.apache.ibatis.builder.BuilderException: The expression 'seqArr' evaluated to a null value. org.apache.ibatis.builder.BuilderException: The expression 'seqArr' evaluated to a null value.

 

현상

<insert id="insertContents" parameterType="testVO">
	<foreach collection="seqArr" item="item" open="INSERT ALL" close="SELECT * FROM DUAL">
                INTO T_TEST( 
                     SEQ
                    , P_SEQ
                    , TEST_NO 
            ) VALUES ( 
                     SEQ_T_TEST.NEXTVAL
                    , #{seq}
                    , #{item}
            )
	</foreach>
</insert>

mybatis에서 insert를 foreach로 해서 한 번에 여러 데이터를 넣는 쿼리를 실행 중 에러가 발생했습니다.

 

원인

1. collection 속성으로 준 파라미터가 null인 경우

2. collection 이 없을 경우

3. collection 기반의 파라미터를 다이렉트로 주입한 경우

(ex: WHERE condition = #{list})

4. foreach 태그 속성 용도를 잘못 쓰였을 경우

 

저 같은 경우는 문법에는 문제가 없었습니다.

다만 collection 속성을 준 파라미터 seqArr이 실제로 null이어서 에러가 난 거더라고요.

 

해결

1. collection 속성으로 준 파라미터가 null인 경우

   1-1. front 단에서 유효성 체크

   1-2. 자바에서 null값을 체크

   >> 1-1 또는 1-2 실행 후  쿼리 실행 여부를 결정해서 정상 실행 되었습니다.

 

<참고사이트>

https://okky.kr/articles/717274

반응형

댓글