我有以下错误

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。

最佳答案

听起来你要么有与hibernate不兼容的jar,要么有一些或所有这些jar的副本。也许是因为您升级到了另一个版本的hibernate,而没有删除旧的jar(或类似的东西)。
如果在lib1.jar和lib2.jar中都找到了类com.my.myClass的不同版本,并且类加载器从lib1.jar加载myClass,但是在lib2.jar中找到了“正确的”myClass(jre正在寻找的方法的那个MyClass),那么您将会遇到您所看到的问题。

10-06 03:21