에러 내용
ERROR: jdbc.audit - 1. PreparedStatement.setNull(1, 1111)
java.sql.SQLException: 부적합한 열 유형: 1111
at oracle.jdbc.driver.OracleStatement.getInternalType(OracleStatement.java:4121)
at oracle.jdbc.driver.OraclePreparedStatement.setNullCritical(OraclePreparedStatement.java:4208)
at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:4192)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setNull(OraclePreparedStatementWrapper.java:1010)
at net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy.setNull(PreparedStatementSpy.java:266)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.setNull(HikariProxyPreparedStatement.java)
at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:61)
at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:87)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:94)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:64)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:88)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.mybatis.spring.SqlSessionTemplateSqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)atcom.sun.proxy.Proxy17.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:93)
at com.sun.proxy.Proxy21.getSchool(UnknownSource)atkr.co.forspace.member.MemberServiceImpl.getSchool(MemberServiceImpl.java:20)atkr.co.forspace.member.MemberController.searchSch(MemberController.java:30)atjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)atjava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.base/java.lang.reflect.Method.invoke(Method.java:564)atorg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)atorg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)atorg.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:652)atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:733)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)atorg.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)atorg.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)atorg.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)atorg.apache.coyote.AbstractProtocolConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpointSocketProcessor.doRun(NioEndpoint.java:1707)atorg.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)atjava.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)atjava.base/java.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:630)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:832)
원인
올바르지 않은 값이 들어갔을 때
해결
1) sqldeveloper로 쿼리 확인 후 이상 없음을 확인함
2) 입력값을 script로 받아와서 쿼리로 검색하는 과정에서 id 값을 잘못 지정했음을 확인함
너무 단순한 실수였고, 다시 살펴보고 꼼꼼히 코드를 확인해야겠다.