DataBase/Oracle SQL

Oracle 부적합한 열 유형:1111 오류 - jdbcType (마이바티스)

유혁스쿨 2021. 11. 2. 00:45
728x90
반응형

1. 데이터 타입이 다른 경우

2. Map을 파라미터로 넘길때 Map 객체의 Parameter가 Null인 경우

3. JSP view request Parameter 값이 없는 경우

4. form id 또는 name 값이 없는 경우

5. ajax 사용시 value 값이 null인 경우

 

 

보통은 Parameter로 받은 값이 null일경우 이 값을 쿼리문으로 넘길때 해당 컬럼이 null을 허용하는 컬럼임에도 불구하고 부적합한 열유형 이라는 쿼리문 에러를 띄운다.

예를들어 쿼리문을 통해 Insert (삽입) 작업을 할때 제약조건에 의해 null 값을 허용하고 있는 컬럼에 null 이 넘어올때 해당 오류가 발생한다.

 

이 경우에는 마이바티스 쿼리문에서 #{Parameter} 형태를 #{Parameter, jdbcType=INTEGER} 형태로 선언해줘야 한다.

 

<insert id="couponRegist">
    INSERT INTO exam (eNo,eName,eNum,ePercent) values 
    (eNo_seq.nextval,#{eName},#{eNum,jdbcType=INTEGER},#{ePercent,jdbcType=INTEGER})
</insert>

 

 

Parameter 값이 Null로 넘어올 경우 이를 처리해야하는데 int를 Integer로 치환했음에도 오라클 데이터베이스 쿼리문 오류가 발생한다면 바로 이 오류를 의심해 볼 수 있다.

나같은 경우 이 오류가 바로 지난시간에 작성했던 QueryString 에서의 Parameter의 정수타입에 Null이 들어왔을때의 내용과 연관되어 이어졌다.

 

Spring에서 정수형 Parameter의 타입인 int, Integer 사용 차이

파라미터 값이 null 인 경우가 있다. 이때 컨트롤러에서 정수형 값으로 받는다고 가정한다면 int 타입은 null을 저장할 수 없기 때문에 오류가 발생한다. 따라서 null이 들어올 수 있는 상황에서는

u-it.tistory.com

 

 

728x90
반응형