hiberate分页错误

源码如下:

Session currentSession = this.getHibernateTemplate()

.getSessionFactory().getCurrentSession();
Query query = null;
try {
StringBuffer hql = new StringBuffer();
String base = "select sum(c.cableLineRadial), sum(c.cableLinePile) , sum(c.cableHeader), sum(c.cableConnectBox) , "
+ " sum(c.cableManholes) , c.deviceNum , count(*) from CableLineInspection as c  ";
hql.append(base);
hql.append("where  c.inspectionDatetime >=? and c.inspectionDatetime <=? ");
hql.append(" group by c.deviceNum.factoryName.id ");
query = currentSession.createQuery(hql.toString());
query.setParameter(0, startTime.toString());
query.setParameter(1, endTime.toString());
System.out.println("hql-->"+hql.toString());
query.setFirstResult((pageInfo.getPage().getCurrentPage() - 1)
* pageInfo.getPage().getPageSize());
query.setMaxResults(pageInfo.getPage().getPageSize());

List list = query.list();
return this.getCableLineInspections(list, "factory");
} catch (Exception e) {
e.printStackTrace();
return null;

}

如果不加红色部分分页操作,可以正常操作。但是加上这两句或者直接在hql语句中写上limit 20没问题,但是写limit 0,20 之后会报如下错误:

2013-05-27 13:06:15,726 ERROR [http-8080-2] org.hibernate.util.JDBCExceptionReporter (JDBCExceptionReporter.java:78) - 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 'limit 20' at line 1
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2223)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.hql.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:912)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at cn.edu.ujn.cablelineinspection.dao.hibernate.CableLineInspectionDAOHibernate.getFaultRatesGroupByFactory(CableLineInspectionDAOHibernate.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
at $Proxy82.getFaultRatesGroupByFactory(Unknown Source)
at cn.edu.ujn.cablelineinspection.service.impl.CableLineInspectionManagerImpl.getFaultRatesByGroup(CableLineInspectionManagerImpl.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)

目前还不知道是什么问题,谁能帮忙解决下,先谢谢拉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值