weixin_42317664 2009-07-10 19:51
浏览 273
已采纳

hibernate query无法分页

              List all = null;
    String hql = "from FzInfoTrade as f where f.tradeTitle like ?";
    Query q = super.getSession().createQuery(hql);

[color=red] q.setFirstResult((currentPage - 1) * lineSize);
q.setMaxResults(lineSize);[/color]
q.setString(0, "%" + cond + "%");
all = q.list();
return all;
遇到一个很奇怪的问题 上面的代码 加了红色的2句之后就有错
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:59)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:1596)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at fz.daoimpl.InfoTradeDAOImpl.queryAll(InfoTradeDAOImpl.java:59)
at fz.daoimpl.InfoTradeDAOImpl.main(InfoTradeDAOImpl.java:68)
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 '1 fzinfotrad0_.trade_id as trade1_, fzinfotrad0_.trade_title as trade2_15_, fzin' at line 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3026)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1137)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1231)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
at org.hibernate.loader.Loader.doQuery(Loader.java:391)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
... 7 more

一直怀疑是否是环境问题 但去掉了就没事 这样的写法没有问题 不知道是哪里的原因?
[b]问题补充:[/b]
mysql的版本是5.2的 我也怀疑是版本问题 但是我这个mysql里又另一个数据库用另一个项目同样的方法是没出问题的
用hibernate好像不能直接在hql里写limit吧
肯定是哪里环境出问题 但就是找不到

  • 写回答

7条回答

  • fantlam 2009-07-12 16:42
    关注

    org.hibernate.dialect. MySQLDialect
    hibernate方言问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名