SqlSession Synchronization Error in SparePlanController.mergeRecords() - Spring and MyBatis Integration Issue
"SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@34381f64] was not registered for synchronization because synchronization is not active\n\tat com.xm.controller.SparePlanController.mergeRecords(SparePlanController.java:92)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\nJDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@53717699] will not be managed by Spring\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n==> Preparing: select spareplan_id,item_id,item,dec_as_num,spareplan.item_num,spareplan.item_name,item_detail,model,capacity,storage_status,storage_num,outbound_status,outbound_num,dispatch_status,plan_status from spareplan,item where spareplan.item=item.item_id and spareplan_id=?; \n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n==> Parameters: 14(Integer)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n<== Columns: spareplan_id, item_id, item, dec_as_num, item_num, item_name, item_detail, model, capacity, storage_status, storage_num, outbound_status, outbound_num, dispatch_status, plan_status\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)\n<== Row: 14, 1, 1, 213, 13, 21, 1, 1, 1, 1, 26, 23, 26, 1, 1\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)\n<== Total: 1\nClosing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@34381f64]\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)\nCreating a new SqlSession\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)\nSqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3ec07414] was not registered for synchronization because synchronization is not active\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\nJDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@53717699] will not be managed by Spring\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\n==> Preparing: select spareplan_id,item_id,item,dec_as_num,spareplan.item_num,spareplan.item_name,item_detail,model,capacity,storage_status,storage_num,outbound_status,outbound_num,dispatch_status,plan_status from spareplan,item where spareplan.item=item.item_id and spareplan_id=?; \n==> Parameters: 10(Integer)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)\n<== Columns: spareplan_id, item_id, item, dec_as_num, item_num, item_name, item_detail, model, capacity, storage_status, storage_num, outbound_status, outbound_num, dispatch_status, plan_status\n<== Row: 10, 1, 1, 213, 13, 21, 1, 1, 1, 1, 13, 23, 13, 1, 1\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\n<== Total: 1\n\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)\nClosing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3ec07414]\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:681)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.lang.Thread.run(Thread.java:748)"。 这段代码是一个异常栈跟踪信息,它描述了在SparePlanController类的mergeRecords方法中发生的错误。错误消息是"SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@34381f64] was not registered for synchronization because synchronization is not active",意思是没有为SqlSession注册同步,因为同步没有激活。 \n \n 这个错误通常是由于没有开启事务管理器或者事务管理器没有正确配置导致的。你可能需要检查代码中是否正确配置了事务管理器,并确保在操作数据库之前开启了事务。 \n \n 另外,日志中还提到"JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@53717699] will not be managed by Spring",意思是JDBC连接将不会由Spring管理。这可能意味着你的代码中没有正确使用Spring的数据源和连接池。你可能需要检查代码中是否正确配置了数据源和连接池,并确保使用Spring提供的方式获取数据库连接。 \n \n 总之,这段异常栈跟踪信息提示了在SparePlanController类的mergeRecords方法中出现了错误,并提供了一些可能的原因和解决方法。你需要仔细检查代码和配置,以确定问题的具体原因并进行修复。
原文地址: https://www.cveoy.top/t/topic/pTiG 著作权归作者所有。请勿转载和采集!