Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'p.knowlege_part_id' in 'field list'

MyBatis中,出现Unknown column的提示是mapper.xml中的数据库字段写错了。

错误示例:

XxMapper.xml中

 <sql id="KnowlegeSectionAndPart_Column_List">
    s.knowledge_section_id, s.create_time, s.update_time, s.section_name,
    s.repository_id, s.bool_close, p.knowlege_part_id, p.create_time,
    p.update_time, p.repository_id, p.section_id, p.bool_close, p.part_name
    </sql>
<!--    通过章id查询章及其节-->
    <select id="getKnowlegeSectionWithPartDOById" parameterType="java.lang.Long"
            resultMap="KnowlegeSectionWithPartResultMap">
        select
        <include refid="KnowlegeSectionAndPart_Column_List"/>
        from knowlege_section s
        where s.knowledge_section_id = #{sid,jdbcType=BIGINT}
    </select>

报错:

  1 ### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'p.knowlege_part_id' in 'field list'
  2 ### The error may exist in file [D:IDEACodeYiZhiDuChangJiangRiver	argetchang_jiang_riverWEB-INFclassescomhzymapperKnowlegeSectionDOMapper.xml]
  3 ### The error may involve com.hzy.dao.KnowlegeSectionDOMapper.getKnowlegeSectionWithPartDOById-Inline
  4 ### The error occurred while setting parameters
  5 ### SQL: select               s.knowledge_section_id, s.create_time, s.update_time, s.section_name, s.repository_id, s.bool_close,p.knowlege_part_id, p.create_time, p.update_time, p.repository_id, p.section_id, p.bool_close, p.part_name               from knowlege_section s         where s.knowledge_section_id = ?
  6 ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'p.knowlege_part_id' in 'field list'
  7 ; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'p.knowlege_part_id' in 'field list'] with root cause
  8     com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'p.knowlege_part_id' in 'field list'
  9         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 10         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 11         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 12         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
 13         at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
 14         at com.mysql.jdbc.Util.getInstance(Util.java:387)
 15         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939)
 16         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
 17         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
 18         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
 19         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
 20         at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551)
 21         at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
 22         at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1192)
 23         at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:67)
 24         at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:59)
 25         at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:73)
 26         at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:60)
 27         at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
 28         at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
 29         at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96)
 30         at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:143)
 31         at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:60)
 32         at com.sun.proxy.$Proxy67.query(Unknown Source)
 33         at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
 34         at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
 35         at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:66)
 36         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 37         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 38         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 39         at java.lang.reflect.Method.invoke(Method.java:498)
 40         at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:386)
 41         at com.sun.proxy.$Proxy24.selectOne(Unknown Source)
 42         at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:165)
 43         at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:68)
 44         at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
 45         at com.sun.proxy.$Proxy25.getKnowlegeSectionWithPartDOById(Unknown Source)
 46         at com.hzy.knowlege.impl.KnowlegeServiceImpl.getKnowlegeSectionWithPartDOById(KnowlegeServiceImpl.java:100)
 47         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 48         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 49         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 50         at java.lang.reflect.Method.invoke(Method.java:498)
 51         at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
 52         at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
 53         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
 54         at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
 55         at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
 56         at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
 57         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
 58         at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
 59         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
 60         at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
 61         at com.sun.proxy.$Proxy28.getKnowlegeSectionWithPartDOById(Unknown Source)
 62         at com.hzy.controller.KnowlegeController.getKnowlegeSectionWithPartById(KnowlegeController.java:122)
 63         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 64         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 65         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 66         at java.lang.reflect.Method.invoke(Method.java:498)
 67         at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
 68         at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
 69         at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
 70         at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
 71         at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
 72         at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
 73         at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
 74         at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
 75         at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
 76         at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
 77         at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
 78         at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
 79         at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
 80         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 81         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 82         at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
 83         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 84         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 85         at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)
 86         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
 87         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 88         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 89         at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
 90         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
 91         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 92         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 93         at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
 94         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
 95         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 96         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 97         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
 98         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 99         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
100         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
101         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
102         at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
103         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
104         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
105         at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
106         at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
107         at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
108         at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
109         at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
110         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
111         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
112         at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
113         at java.lang.Thread.run(Thread.java:745)
View Code

修改(添加 knowlege_part p):

 <!--    通过章id查询章及其节-->
    <select id="getKnowlegeSectionWithPartDOById" parameterType="java.lang.Long"
            resultMap="KnowlegeSectionWithPartResultMap">
        select
        <include refid="KnowlegeSectionAndPart_Column_List"/>
        from knowlege_section s, knowlege_part p
        where s.knowledge_section_id = #{sid,jdbcType=BIGINT}
    </select>

回调成功:

总结:

所有被查询的字段,如果数据库表有别名,那么对应的字段也必须有别名,反之亦然。

原文地址:https://www.cnblogs.com/yang101/p/11282808.html