HQL中没有此类方法错误

时间:2014-01-14 10:41:35

标签: java select hql

我收到了以下错误

java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
    org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1173)
    org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
    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:248)

执行以下hql时

select object(o),p.dateApply,p.reason,p.Approver from Person as o "+
                " com.jpa.entities.Application as p where o.id = p.nricNo and o.batchNumber= :batchNo

如果我删除以下查询

p.dateApply,p.reason,p.Approver

它工作得很好。我想要的是从Person实体和Application实体返回值。

希望有人可以帮助我,因为我是HQL的新手。

1 个答案:

答案 0 :(得分:1)

听起来你有不兼容的与Hibernate相关的JAR,或者某些或所有JAR的重复。也许是因为你升级到不同版本的Hibernate而没有删除旧的JAR(或类似的东西)。

如果在lib1.jar和lib2.jar中找到com.my.MyClass类的不同版本,并且类加载器从lib1.jar加载MyClass,但是“正确的”MyClass(具有JRE方法的那个)在lib2.jar中找到了,你会遇到你正在看到的问题。