반응형
에러메시지
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 실행 후 쿼리 실행 여부를 결정해서 정상 실행 되었습니다.
<참고사이트>
반응형
댓글