首页 文章

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:带有SpringBoot的'field list'中的未知列'city0_.country_code'

提问于
浏览
0

尝试使用Gradle创建一个简单的SpringBoot应用程序 - 使用DataBase的Api . 当尝试从表中获取数据时,使用api调用,在邮递员中获取异常:

{
    "timestamp": "2018-04-01T12:45:40.218+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet",
    "path": "/api/demo/towns"
}

在具有下一个例外的Idea中:

2018-04-01 15:44:29.553 ERROR 17532 --- [nio-8080-exec-2] ohengine.jdbc.spi.SqlExceptionHelper:'字段列表'中的未知列'city0_.country_code'2018-04- 01 15:44:29.578 ERROR 17532 --- [nio-8080-exec-2] oaccC [ . [ . [/] . [dispatcherServlet]:servlet [dispatcherServlet]的Servlet.service()与path []抛出的上下文异常[请求处理失败;嵌套异常是org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取ResultSet; SQL [不适用];嵌套异常是org.hibernate.exception.SQLGrammarException:无法使用根本原因提取ResultSet] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:sun.reflect.NativeConstructorAccessorImpl中“字段列表”中的未知列'city0_.country_code' . newInstance0(Native Method)〜[na:1.8.0_144] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)〜[na:1.8.0_144] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45 )〜[na:1.8.0_144] at java.lang.reflect.Constructor.newInstance(Constructor.java:423)〜[na:1.8.0_144] at com.mysql.jdbc.Util.handleNewInstance(Util.java:425 )〜[mysql-connector-java-5.1.45.jar:5.1.45]在com.mysql.jdbc.Util.getInstance(Util.java:408)〜[mysql-connector-java-5.1.45.jar: 5.1.45] com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)〜[mysql-connector-java-5.1.45.jar:5.1.45] at com.mysql.jdbc.MysqlIO.checkErrorPacket( MysqlIO.java:3973)〜[mysql-connect或者-java-5.1.45.jar:5.1.45]在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)〜[mysql-connector-java-5.1.45.jar:5.1.45] at at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)〜[mysql-connector-java-5.1.45.jar:5.1.45] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680 )〜[mysql-connector-java-5.1.45.jar:5.1.45] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)〜[mysql-connector-java-5.1.45.jar: 5.1.45] com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)〜[mysql-connector-java-5.1.45.jar:5.1.45] at com.mysql.jdbc.PreparedStatement.executeQuery( PreparedStatement.java:1966)~ [mysql-connector-java-5.1.45.jar:5.1.45] at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)〜[HikariCP-2.7.8 .jar:na] at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)〜[HikariCP-2.7.8.jar:na] at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(Res ultSetReturnImpl.java:60)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final]在org.hibernate.loader.Loader.getResultSet(Loader.java:2168)~ [hibernate-core-5.2 .14.Final.jar:5.2.14.Final]在org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1931)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final]在org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1893)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final] org.hibernate.loader.Loader.doQuery(Loader . java:938)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final] org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)〜[hibernate-core-5.2.14 .Final.jar:5.2.14.Final]在org.hibernate.loader.Loader.doList(Loader.java:2692)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final] at org .hibernate.loader.Loader.doList(Loader.java:2675)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final]在org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java: 2507)〜org.hibern的[hibernate-core-5.2.14.Final.jar:5.2.14.Final] org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java)中的ate.loader.Loader.list(Loader.java:2502)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final] :502)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final]在org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:392)〜[hibernate-core- 5.2.14.Final.jar:5.2.14.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)~ [hibernate-core-5.2.14.Final.jar:5.2在org.hibernate.query.internal的org.hibernate.internal.SessionImpl.list(SessionImpl.java:1489)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final]的.14.Final] .AbstractProducedQuery.doList(AbstractProducedQuery.java:1445)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final]在org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414) 〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final]在org.hibernate.query.Query.getResultList(Query.java:146)~ [hibernate-core-5.2.14.Final.jar :5.2.14.Final]在org.hibernate.query.cri teria.internal.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:72)〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final]在org.springframework的org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:307)〜[spring-data-jpa-2.0.5.RELEASE.jar:2.0.5.RELEASE] . data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:74)〜[spring-data-jpa-2.0.5.RELEASE.jar:2.0.5.RELEASE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)〜[na:1.8.0_144] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:1.8.0_144] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[ na:1.8.0_144] at java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_144] at org.springframework.data.repository.core.support.RepositoryComposition $ RepositoryFragments.invoke(在org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:200)的RepositoryComposition.java:377)~ [spring-data-commons-2.0.5.RELEASE.jar:2.0.5.RELEASE] )〜[spring-data-commons-2.0.5.REL EASE.jar:2.0.5.RELEASE]在org.springframework.data.repository.core.support.RepositoryFactorySupport $ ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:629)〜[spring-data-commons-2.0.5.RELEASE.jar :org.springframework上的org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)〜[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE]的2.0.5.RELEASE] org.springframework.data中的.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:593)〜[spring-data-commons-2.0.5.RELEASE.jar:2.0.5.RELEASE] . repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:578)〜[spring-data-commons-2.0.5.RELEASE.jar:2.0.5.RELEASE] org.springframework.aop.framework.ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:185)〜[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE] org.springframework.data.projection . org.springframework.aop.framework.ReflectiveMethodInvocation.proceed中的DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:59)〜[spring-data-commons-2.0.5.RELEASE.jar:2.0.5.RELEASE](ReflectiveMethodInvocation.java:185 )〜[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE]在org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)〜[spring-tx-5.0.4 . RELEASE.jar:5.0.4.RELEASE]在org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)〜[spring-tx-5.0.4.RELEASE.jar:5.0.4.RELEASE] at at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)〜[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE] org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke (PersistenceExceptionTranslationInterceptor.java:139)〜[spring-tx-5.0.4.RELEASE.jar:5.0.4.RELEASE] org.springframework.aop.f ramework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)〜[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE] at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor $ CrudMethodMetadataPopulatingMethodInterceptor.invoke (CrudMethodMetadataPostProcessor.java:135)〜[spring-data-jpa-2.0.5.RELEASE.jar:2.0.5.RELEASE] org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)〜[在org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)〜[spring-aop-5.0.4.RELEASE.jar]的spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE] :org.springframework上的org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)〜[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE]的5.0.4.RELEASE] .data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)〜[spring-data -commons-2.0.5.RELEASE.jar:2.0.5.RELEASE]在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)〜[spring-aop-5.0.4.RELEASE.jar: 5.0.4.RELEASE]在com.sun的org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)〜[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE] . 代理 . $ Proxy82.findAll(未知来源)〜[na:na] at com.apidbdemo.controllers.DemoController.getTowns(DemoController.java:27)〜[classes /:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)〜[na:1.8.0_144] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:1.8.0_144] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[ na:1.8.0_144]在java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_144] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java: 209)〜[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE] atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)〜[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE] org.springframework.web.servlet.mvc org.springframework.web.servlet.mvc.method.annotation中的.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)〜[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE] . org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter)中的RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870)~ [spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE] .java:776)〜[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE] org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)〜[ spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)〜[spri ng-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)~ [spring-webmvc-5.0.4.RELEASE.jar :org.springframework上的org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)〜[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]的5.0.4.RELEASE] javax.servlet.http.HttpServlet.service上的.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870)~ [spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE](HttpServlet.java: 635)〜[tomcat-embed-core-8.5.28.jar:8.5.28]在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)〜[spring-webmvc-5.0.4.RELEASE .jar:5.0.4.RELEASE]在org.apache.catalina的javax.servlet.http.HttpServlet.service(HttpServlet.java:742)〜[tomcat-embed-core-8.5.28.jar:8.5.28] .core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)〜[tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.catalina.core.ApplicationFilterChain.doFilte r(ApplicationFilterChain.java:166)~ [tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)〜[tomcat -embed-websocket-8.5.28.jar:8.5.28] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)~ [tomcat-embed-core-8.5.28.jar:8.5 . 28] org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)~ [tomcat-embed-core-8.5.28.jar:8.5.28] at org.springframework.web.filter.RequestContextFilter . 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring]的doFilterInternal(RequestContextFilter.java:99)〜[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE] -web-5.0.4.RELEASE.jar:5.0.4.RELEASE]在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-8.5.28.jar: 8.5.28]在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed -core-8.5.28.jar:8.5.28] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)〜[spring-web-5.0.4.RELEASE.jar:5.0.4 . 发布在org.apache.catalina.core上的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE] . ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)~ [tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)~ [tomcat -embed-core-8.5.28.jar:8.5.28] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)〜[spring-web-5.0.4.RELEASE.jar:5.0 . 4.RELEASE]在org.apache.catalina的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE] . core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-em bed-core-8.5.28.jar:8.5.28] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)~ [tomcat-embed-core-8.5.28.jar:8.5.28 ] org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)〜[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE] org.springframework.web.filter.OncePerRequestFilter ordo.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[[ . tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)~ [tomcat-embed-core-8.5.28.jar:8.5 .28]在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)〜[tomcat-embed-core-8.5.28.jar:8.5.28] org.apache.catalina.core.StandardContextValve .invoke(StandardContextValve.java:96)[tomcat-embed-core-8.5.28.jar:8.5.28] atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)[tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve . java:140)[tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)[tomcat-embed-core-8.5.28 .jar:8.5.28]在org.apache.catalina的org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)[tomcat-embed-core-8.5.28.jar:8.5.28] . connector.CoyoteAdapter.service(CoyoteAdapter.java:342)[tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.coyote.http11.Http11Processor.service(http11Processor.java:803)[tomcat -embed-core-8.5.28.jar:8.5.28] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)[tomcat-embed-core-8.5.28.jar:8.5.28] at at org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:790)[tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.tomcat.util.net.Ni oEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1459)[tomcat-embed-core-8.5.28.jar:8.5.28] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.28.jar:8.5.28] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[na:1.8.0_144] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)[na:1.8.0_144] at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)[tomcat-embed-core-8.5.28 .jar:8.5.28] at java.lang.Thread.run(Thread.java:748)[na:1.8.0_144]

我看到问题出在CountryCode列上,但是没有't understand, what is with it. Using MySql DB, one table. It'的结构:
enter image description here

主要实体:

@Entity
@Table(name="city")
public class City implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name="Name")
    private String name;


    @Column(name="CountryCode")
    private String countryCode;

    @Column(name="District")
    private String district;

    @Column(name="Population")
    private int population;

    public int getId(){
        return id;
    }

    public void setId(int id){
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCountryCode() {
        return countryCode;
    }

    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }

    public String getDistrict() {
        return district;
    }

    public void setDistrict(String district) {
        this.district = district;
    }

    public int getPopulation() {
        return population;
    }

    public void setPopulation(int population) {
        this.population = population;
    }

    public City(String name, String countryCode, String district, int population){
        this.name = name;
        this.countryCode = countryCode;
        this.district = district;
        this.population = population;
    }

    public City(){

    }
}

库:

@Repository("cityRepository")
public interface CityRepository extends CrudRepository<City, Integer> {
}

控制器:

@RestController
@RequestMapping("/api/demo")
public class DemoController {

    @Autowired
    @Qualifier("cityRepository")
    private CityRepository cityRepository;

    @RequestMapping(value = "towns",
                    method = RequestMethod.GET,
                    produces = {MimeTypeUtils.APPLICATION_JSON_VALUE},
                    headers = "Accept=application/json")
    public ResponseEntity<Iterable<City>> getTowns() {
        Iterable<City> list = cityRepository.findAll();
        return new ResponseEntity<Iterable<City>>(list, HttpStatus.OK);
    }
}

1 回答

  • 1

    感谢@JB Nizet的回答,在我将属性: spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 添加到 application.property 文件后,一切正常 . 谢谢 .

相关问题