본문 바로가기

programming/java, Spring, android, js

HTTP Status 500 – Internal Server Error, Mapped Statements collection does not contain value

친구랑 하는 작은 사이드 프로젝트를 구성하다가 만난 오류이다.

 

우선 다음과 같은 오류를 직면하게 된다.

 

심각: Servlet.service() for servlet [appServlet] in context with path [/edufactory] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for testMapper.dataValue
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for testMapper.dataValue] with root cause
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for testMapper.dataValue
	at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:797)
	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:631)
	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:624)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
	at com.sun.proxy.$Proxy9.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198)
	at rsc.binoofactory.edufactory.commons.svc.TestMapper.dataValue(TestMapper.java:12)
	at rsc.binoofactory.edufactory.HomeController.home(HomeController.java:42)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:747)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:676)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

 

구성요소에는 HomeController 와 TestMapper 정도가 전부이다.

 

무엇이 문제일까?

크게보면 아래 3가지 중 하나이니 먼저 확인해보도록 하자.


     (1) Parameter, Return이 매퍼와 bean에 등록된 개체간 field명, 또는 타입이  틀린 경우

        - VO 를 사용하는 경우, 속성명과 타입이 다른 파라미터나 리턴이 다르면 오류를 뱉는다.

     (2) mapper가 정의가 되어 있지 않거나 Spelling이 틀린 경우

        - 매퍼가 있는지 확인

        - 매퍼의 경로나 파일명 확인

        - 매퍼 내부 id와 호출 id가 일치하는지 확인

        - 설정정보에서 네임스페이스와 엑세스 객체의 네임스페이스 String을 확인한다.
     (3) mapper에 정의된 namespace 명칭이 같은 Application 내에 중복 될 경우

        - 충돌이 발생하는 네임스페이스를 해당 프로젝트에서 뒤져서 유니트하게 만들어준다. 리소스 정리 이후 재실행.

 

 


 

참고/출처 : https://luceatluxvestra.tistory.com/17

 

[에러] java.lang.IllegalArgumentException: Mapped Statements collection does not contain value

진행하고 있던 프로젝트에 MyBatis를 적용하다가 에러가 나서 정리해 둔다. 발생한 에러는 아래와 같다. * 에러 메세지 심각: Servlet.service() for servlet [action] in context with path [/xxx] threw excepti..

luceatluxvestra.tistory.com

 

반응형