hiberate分页错误

来源:互联网 发布:minix源码分析 编辑:程序博客网 时间:2024/05/22 07:57

源码如下:

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)

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

原创粉丝点击