오류 및 편의성 모음

Cause: java.sql.SQLException: 부적합한 열 유형: 1111

단데기이 2022. 6. 2. 16:47
728x90
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: 
Could not set parameters for mapping: ParameterMapping{property='keyword', mode=IN, javaType=cla
ss java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null',
expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting null for paramet
er #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different j
dbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111

 

만들고있던 페이지에서 기능을 구현하던중 해당 기능을 동작시켰더니 이러한 오류가 발생하였다.

 

구글링을 통해 검색한결과 테이블 컬럼에 null 이 들어가도 되는 경우 널이 넘어오는 경우를 생각해서

MyBatis 에서 column type 지정해 줘야 하는 문제이다.

 

내가 하던 기능도 마찬가지로 카테고리나 키워드를 입력해서 검색을 하는 기능인데

카테고리만 지정하고 keyword를 null로하니 생긴 오류이다. 따라서 해당열에 jdbcType=VARCHAR 을 해줘야하는데

일일히 하기엔 고난한 작업이므로, mybatis-config.xml 을 만들어서 한 번에 처리하였다.

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> 
	<settings>
    	<setting name="cacheEnabled" value="false" /> 
        <setting name="jdbcTypeForNull" value="NULL" /> 
    </settings> 
    <typeAliases> 
    	<package name="com.myport.domain"/>    
    </typeAliases> 
</configuration>

 

그리고 root-context.xml에서 연결시켜준다.

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
</bean>