异常信息:java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
//获得总记录数
int count = articleService.getResult("from Article where users.id=?", new Object[]{loginUser.getId()}).size();
int maxPage = count / NUMBER;
if(count%NUMBER != 0){
maxPage ++;
}
//获得列表
List list = articleService.getResult("from Article where users.id=? order by indate limit ? offset ?", new Object[]{loginUser.getId(),NUMBER,(page-1)*NUMBER});
if(count != 0 && list == null){
list = articleService.getResult("from Article where users.id=? order by indate limit ? offset ?", new Object[]{loginUser.getId(),NUMBER,0});
}
if(list != null){
PageData data = new PageData(list,page,maxPage);
request.setAttribute("article", data);
}
getResult方法定义如下:
public List getResult(String hql, Object[] parameters) {
// TODO Auto-generated method stub
Query query = sessionFactory.getCurrentSession().createQuery(hql);
//注入?
if(parameters != null && parameters.length > 0){
for(int i = 0;i < parameters.length;i ++){
query.setParameter(i, parameters[i]);
}
}
return query.list();
}
简单来说就是hql有问题,要对照你的表仔细检查
java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
org.hibernate.hql.antlr.HqlBaseParser.identPrimary(HqlBaseParser.java:4065)
org.hibernate.hql.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:861)
org.hibernate.hql.antlr.HqlBaseParser.atom(HqlBaseParser.java:3438)
org.hibernate.hql.antlr.HqlBaseParser.unaryExpression(HqlBaseParser.java:3216)
org.hibernate.hql.antlr.HqlBaseParser.multiplyExpression(HqlBaseParser.java:3098)
org.hibernate.hql.antlr.HqlBaseParser.additiveExpression(HqlBaseParser.java:2818)
org.hibernate.hql.antlr.HqlBaseParser.concatenation(HqlBaseParser.java:570)
org.hibernate.hql.antlr.HqlBaseParser.relationalExpression(HqlBaseParser.java:2586)
org.hibernate.hql.antlr.HqlBaseParser.equalityExpression(HqlBaseParser.java:2449)
org.hibernate.hql.antlr.HqlBaseParser.negatedExpression(HqlBaseParser.java:2413)
org.hibernate.hql.antlr.HqlBaseParser.logicalAndExpression(HqlBaseParser.java:2331)
org.hibernate.hql.antlr.HqlBaseParser.logicalOrExpression(HqlBaseParser.java:2296)
org.hibernate.hql.antlr.HqlBaseParser.expression(HqlBaseParser.java:2082)
org.hibernate.hql.antlr.HqlBaseParser.orderElement(HqlBaseParser.java:2122)
org.hibernate.hql.antlr.HqlBaseParser.orderByClause(HqlBaseParser.java:1248)
org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:751)
org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:271)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:101)
org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:80)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1650)
com.xiaonei.base.service.BaseServiceImpl.getResult(BaseServiceImpl.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$Proxy11.getResult(Unknown Source)
com.xiaonei.web.action.ArticleAction.showArticleUI(ArticleAction.java:91)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
from Article where users.id=? order by indate limit ? offset 这句hql有问题吧,你直接改写成sql语句,用参数替换?跑一下sql语句看,是不是有问题
from Article where users.id=? order by indate limit ? offset 这句hql有问题吧,你直接改写成sql语句,用参数替换?跑一下sql语句看,是不是有问题