Spring mybatis를 사용하여 Oracle Database에 data insert하는 과정에서 아래와 같은 오류가 발생했다.
오류 메시지
Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111 |
오류 발생 원인
- 데이터 타입이 다른 경우
- Map을 파라미터로 넘겼을 때 해당 맵안에 파라미터가 null인 경우
- jsp view request parameter 값이 없는 경우
- form id 또는 name 값이 없는 경우
- ajax 모듈 사용 시 value 값이 null인 경우
나 같은 경우 파라미터로 넘긴 일부 컬럼의 값이 NULL 이었다.
myBatis, iBatis 는 Oracle을 사용할 때 Nullable Column(null 값이 들어갈 수 있는 컬럼)을 사용하기 위해 다음과 같이
값 뒤에 , jdbcType=VARCHAR 처리를 해줘야 한다.
INSERT INTO KTF_COMPARE_RESULT(
COLUMN_IDX
, COLUMN_NM
, TIMESTAMP_ACC
, VIN
) VALUES (
#{columnIdx}
, #{columnNm, jdbcType=VARCHAR}
, #{timestampAcc, jdbcType=VARCHAR}
, #{vin, jdbcType=VARCHAR}
)
가능한 타입은 다음과 같다
BIT | FLOAT | CHAR | TIMESTAMP | OTHER | UNDEFINED |
TINYINT | REAL | VARCHAR | BINARY | BLOB | NVARCHAR |
SMALLINT | DOUBLE | LONGVARCHAR | VARBINARY | CLOB | NCHAR |
INTEGER | NUMERIC | DATE | LONGVARBINARY | BOOLEAN | NCLOB |
BIGINT | DECIMAL | TIME | NULL | CURSOR |
그런데 !!!!
이를 해결하기 위해 jdbcType을 값 뒤에 붙이는데, 이 양이 상당히 많을 때 하나하나 언제 다 수정할 것인가...
mybatis 설정파일을 변경할 권한이 있는 경우
context-mapper.xml 파일을 열면 property name이 configLocation 인 것을 찾고, 그 value 값에 나와있는 경로를 찾아가면 된다.
그 경로를 찾아가서 configuration 태그 아래 settings 이라는 태그에 setting 프로퍼티를 추가 한다.
<setting name="jdbcTypeForNull" value="NULL" />
<settings>
<setting name="cacheEnabled" value="false" />
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
context-mapper.xml 에서 찾지 못했다면
전자정부 프레임워크를 사용하는 경우 context-sqlMap.xml 파일을 열어서 위와 같이 경로를 찾아가면 된다.
context-sqlMal.xml 파일은 DB 쿼리 SQL 파일 위치 및 설정 하는 것이고,
context-mapper.xml 는 DB 쿼리 이후 VO(Value Object) 객체에 대한 맵핑을 iBatis나 MyBatis 등을 사용해서 할수 있도록 설정 하는 차이가 있다.
'IDE > Eclipse' 카테고리의 다른 글
[Error] 이클립스 Failed to Start component 에러, Maven 초기화 (0) | 2019.10.24 |
---|---|
[Eclipse] 전자정부프레임워크 Package Explorer 열기 (0) | 2019.10.23 |
[Eclipse] 전자정부 프레임워크 이클립스 메모리 설정 (0) | 2019.10.22 |
[Eclipse] 이클립스 테마 변경하기(Dark 버전) (0) | 2019.10.22 |
[Error] 전자정부 프레임워크 Eclipse taglibs 에러 해결방법 (0) | 2019.07.12 |
댓글