HQL: select id,title,body from Bulletin where  ( title like '%a%' or body like '%a%' )  and (createTime >= Mon Sep 01 00:00:00 CST 2008)  and (createTime <= Sun Sep 28 23:59:59 CST 2008)
执行这条hql语句的时候出现异常:
Exception in thread "Thread-26" 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:4049)
at org.hibernate.hql.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:861)
at org.hibernate.hql.antlr.HqlBaseParser.atom(HqlBaseParser.java:3422)
at org.hibernate.hql.antlr.HqlBaseParser.unaryExpression(HqlBaseParser.java:3200)
at org.hibernate.hql.antlr.HqlBaseParser.multiplyExpression(HqlBaseParser.java:3082)
at org.hibernate.hql.antlr.HqlBaseParser.additiveExpression(HqlBaseParser.java:2802)
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.expressionOrVector(HqlBaseParser.java:4165)
at org.hibernate.hql.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:944)
at org.hibernate.hql.antlr.HqlBaseParser.atom(HqlBaseParser.java:3422)
at org.hibernate.hql.antlr.HqlBaseParser.unaryExpression(HqlBaseParser.java:3200)
at org.hibernate.hql.antlr.HqlBaseParser.multiplyExpression(HqlBaseParser.java:3082)
at org.hibernate.hql.antlr.HqlBaseParser.additiveExpression(HqlBaseParser.java:2802)
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:2341)
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:238)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
at com.aljoin.oa.search.jdbc.impl.SearchDAO.search(SearchDAO.java:27)
at com.aljoin.oa.search.engine.database.DatabaseSearchEngine$Searcher.run(DatabaseSearchEngine.java:145)
at java.lang.Thread.run(Thread.java:595)
如果时间不加上就不会出错:and (createTime >= Mon Sep 01 00:00:00 CST 2008)  and (createTime <= Sun Sep 28 23:59:59 CST 2008)
网上搜了,有人说是antlr-2.7.4.jar这个包没有,有人说是hibernate3.jar中org\hibernate\hql\antlr这个底下为空,我检查了,都有!
请指点

解决方案 »

  1.   

    and (year(createTime) >= Mon Sep 01 00:00:00 CST 2008)  and (year(createTime) <= Sun Sep 28 23:59:59 CST 2008) 
    前天跟老大学的...
      

  2.   

    这个可能是由于sql语句的语法错误引起的,用下面的这个试一下:
    (createTime >= '2008-09-01 00:00:00')  and (createTime <= '2008-09-01 23:59:59')如果不行,你自己再改改,然后放到数据服务器上执行以下看行不行
      

  3.   

    hibernate不支持这样写Sun Sep 28 23:59:59 CST 2008Exception in thread "Thread-26" java.lang.NoSuchMethodError
    这不说清楚了么
    根据4楼的改法看下
      

  4.   

    国庆长假结束,又要开始工作了,祝大家节后愉快!!
    4楼回复可以解决问题.根源还在研究当中.
    第一次用csdn发帖解决问题.还不错.
    结帖给分了.
      

  5.   

    恩  我也犯了一样的错误  最后才发现是 HQL语句的问题 造成  HIBERNATE  不能解析你的  HQL语句 导致的错误