这是在mysql中可以运行的查询语句:
Select sum(payment.payment_total-payment.payment_commision) 
from  payment inner join user_info on
payment.payment_user_info=user_info.info_id 
where payment.payment_date>DATE_SUB(NOW(),INTERVAL 5 MONTH) AND 
user_info.info_id=1这个语句的意思是查出payment表中用户id(info_id)为1并且
Payment_date是大于当前时间减去5个月(比如:当前时间为2012-3-17,减去5个月得到2011-10-17)在这期间用户的所赚的钱。对应在hibernate中的hql语句为:select SUM(p.paymentTotal-p.paymentCommision)
 FROM Payment p LEFT JOIN 
p.userInfo pu where p.paymentDate>DATE_SUB(NOW(),INTERVAL 5 MONTH) 
AND pu.infoId=1当执行这条查询语句时。报出以下异常:
   异常再1楼当我将payment.payment_date>DATE_SUB(NOW(),INTERVAL 5 MONTH) AND 这个时间条件去掉,就可以查出数据。但hibernate在执行查询时会将不能识别的函数原封不动的转成sql语句.
我用的antlr2.7.6.jar
请大牛指出问题出在哪里?

解决方案 »

  1.   

    [color=#FF0000]java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
    at org.hibernate.hql.antlr.HqlBaseParser.identPrimary(HqlBaseParser.java:4065)
    at org.hibernate.hql.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:861)
    at org.hibernate.hql.antlr.HqlBaseParser.atom(HqlBaseParser.java:3438)
    at org.hibernate.hql.antlr.HqlBaseParser.unaryExpression(HqlBaseParser.java:3216)
    at org.hibernate.hql.antlr.HqlBaseParser.multiplyExpression(HqlBaseParser.java:3098)
    at org.hibernate.hql.antlr.HqlBaseParser.additiveExpression(HqlBaseParser.java:2818)
    at org.hibernate.hql.antlr.HqlBaseParser.concatenation(HqlBaseParser.java:570)
    at org.hibernate.hql.antlr.HqlBaseParser.relationalExpression(HqlBaseParser.java:2586)
    at org.hibernate.hql.antlr.HqlBaseParser.equalityExpression(HqlBaseParser.java:2449)
    at org.hibernate.hql.antlr.HqlBaseParser.negatedExpression(HqlBaseParser.java:2413)
    at org.hibernate.hql.antlr.HqlBaseParser.logicalAndExpression(HqlBaseParser.java:2331)
    at org.hibernate.hql.antlr.HqlBaseParser.logicalOrExpression(HqlBaseParser.java:2296)
    at org.hibernate.hql.antlr.HqlBaseParser.expression(HqlBaseParser.java:2082)
    at org.hibernate.hql.antlr.HqlBaseParser.exprList(HqlBaseParser.java:3828)
    at org.hibernate.hql.antlr.HqlBaseParser.identPrimary(HqlBaseParser.java:3979)
    at org.hibernate.hql.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:861)
    at org.hibernate.hql.antlr.HqlBaseParser.atom(HqlBaseParser.java:3438)
    at org.hibernate.hql.antlr.HqlBaseParser.unaryExpression(HqlBaseParser.java:3216)
    at org.hibernate.hql.antlr.HqlBaseParser.multiplyExpression(HqlBaseParser.java:3098)
    at org.hibernate.hql.antlr.HqlBaseParser.additiveExpression(HqlBaseParser.java:2818)
    at org.hibernate.hql.antlr.HqlBaseParser.relationalExpression(HqlBaseParser.java:2667)
    at org.hibernate.hql.antlr.HqlBaseParser.equalityExpression(HqlBaseParser.java:2449)
    at org.hibernate.hql.antlr.HqlBaseParser.negatedExpression(HqlBaseParser.java:2413)
    at org.hibernate.hql.antlr.HqlBaseParser.logicalAndExpression(HqlBaseParser.java:2331)
    at org.hibernate.hql.antlr.HqlBaseParser.logicalOrExpression(HqlBaseParser.java:2296)
    at org.hibernate.hql.antlr.HqlBaseParser.expression(HqlBaseParser.java:2082)
    at org.hibernate.hql.antlr.HqlBaseParser.logicalExpression(HqlBaseParser.java:1858)
    at org.hibernate.hql.antlr.HqlBaseParser.whereClause(HqlBaseParser.java:454)
    at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:708)
    at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
    at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:271)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1650)
    at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1293)
    at $Proxy0.createQuery(Unknown Source)
    at com.art.dao.impl.BaseDAOImpl$6.doInHibernate(BaseDAOImpl.java:105)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
    at com.art.dao.impl.BaseDAOImpl.query(BaseDAOImpl.java:103)
    at com.art.tld.BtnSelectIncome.doTag(BtnSelectIncome.java:45)
    at org.apache.jsp.WEB_002dINF.webs.mypage_jsp._jspx_meth_ART_005fic_005f0(mypage_jsp.java:1179)
    at org.apache.jsp.WEB_002dINF.webs.mypage_jsp._jspService(mypage_jsp.java:281)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)
    [/color]