Caused by: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='value1', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}.
...
Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #3 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111
스프링부트 프로젝트 테스트 중, 위와 같은 오류가 발생하였다.
원인은 MyBatis 쿼리 호출 시 Oracle DB상에 nullable로 설정되어있는 'value1' 이라는 필드값이 null로 넘어왔기 때문에 발생하는 오류이다. (띠용)
#해결방법
1. 수정할 필드가 한 두개일 때
해당 값을 #{value1, jdbcType=VARCHAR} 이렇게 값 뒤에 , jdbcType = VARCHAR 를 추가해준다.
2. 수정할 필드가 많을 때
일일히 jdbcType=VARCHAR를 써주지 않도록 아예 설정파일을 수정해준다.
1) sqlSessionFactory 설정해주는 코드안에 setJdbcTypeForNull(JdbcType.NULL) 로 설정해주거나
@Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage("com.xxx.mapper");
SqlSessionFactory sqlSessionFactory = sessionFactory.getObject();
sqlSessionFactory.getConfiguration().setJdbcTypeForNull(JdbcType.NULL);
return sqlSessionFactory;
}
2) config.xml 에 <configuration> 태그에 jdbcTypeForNull 세팅 추가
<settings> <setting name="jdbcTypeForNull" value="NULL" /> </settings>
* 2번은 두 개의 방법 중 하나만 하면 됨..
이렇게 해주면 정상 동작!
'개발' 카테고리의 다른 글
[404 에러 eclipse 설정]Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다. (5) | 2021.04.14 |
---|---|
sqlplus: 명령을 찾을 수 없습니다 해결방법 (0) | 2021.04.07 |
[Oracle Weblogic] 웹로직에 어플리케이션 배포 (0) | 2020.02.20 |
[Eclipse-Maven] 메이븐 프로젝트 install로 war 파일 export 하기 (0) | 2020.02.20 |
[Eclipse-Maven] Tomcat으로 로컬서버에 띄우기 (0) | 2020.02.20 |