2005/11/19 | MYSQL不支持top查询,为什么hibernate解析成top。哪个帅哥帮我看看!
类别(小新的博客[原创]) | 评论(4) | 阅读(1738) | 发表于 21:50
--------------------
数据库:MYSQL5.0
驱动:mysql-connector-java-3.1-nightly-20051101-bin.jar
Hibernate2.1.8
JDK1.4.2
--------------------
hibernate.datasource.url=jdbc:mysql://localhost:3306/springproject
hibernate.datasource.driverClassName=com.mysql.jdbc.Driver
hibernate.datasource.username=root
hibernate.datasource.password=hxy
hibernate.dialect=net.sf.hibernate.dialect.SQLServerDialect
hibernate.show_sql=true
--------------------
        Session session = getSession();
        Query query = session.createQuery("from Products pro " + condition);
        query.setFirstResult(begin);
        query.setMaxResults(size);
        List list = query.list();
        session.close();
这个查询语句昨天还好好的,今天一运行出现错误,说MYSQL服务器不支持该种查询。而且就查询出错,添加、修改都正常。

-----------------------------------------------------------------------------------------------
错误如下
Hibernate: select products0_.id as id, products0_.description as descript2_, products0_.price as price from products products0_
Hibernate: select top 2 products0_.id as id, products0_.description as descript2_, products0_.price as price from products products0_

2005-09-15 15:08:27,609 WARN [net.sf.hibernate.util.JDBCExceptionReporter] - <SQL Error: 1064, SQLState: 42000>
2005-09-15 15:08:27,609 ERROR [net.sf.hibernate.util.JDBCExceptionReporter] - <You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 products0_.id as id, products0_.description as descript2_, products0_.price as' at line 1>
2005-09-15 15:08:27,609 WARN [net.sf.hibernate.util.JDBCExceptionReporter] - <SQL Error: 1064, SQLState: 42000>
2005-09-15 15:08:27,609 ERROR [net.sf.hibernate.util.JDBCExceptionReporter] - <You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 products0_.id as id, products0_.description as descript2_, products0_.price as' at line 1>
net.sf.hibernate.exception.SQLGrammarException: Could not execute query
    at net.sf.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:58)
    at net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
    at net.sf.hibernate.impl.SessionImpl.convert(SessionImpl.java:4131)
    at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1557)
    at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:49)
    at dao.hibernate.ProductsDao.listObject(ProductsDao.java:25)
    at bus.products.ProductsManager.listProducts(ProductsManager.java:36)
    at web.ProductsListController.handleRequest(ProductsListController.java:44)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
    at org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:386)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:346)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
Caused by: java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 products0_.id as id, products0_.description as descript2_, products0_.price as' at line 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2926)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2978)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:933)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1027)
    at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:89)
    at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:880)
    at net.sf.hibernate.loader.Loader.doQuery(Loader.java:273)
    at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:138)
    at net.sf.hibernate.loader.Loader.doList(Loader.java:1063)
    at net.sf.hibernate.loader.Loader.list(Loader.java:1054)
    at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
    at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1554)
    ... 39 more
0

评论Comments