我需要这个错误的帮助:java.lang.NoSuchMethodError [英] I need help with this error: java.lang.NoSuchMethodError

查看:176
本文介绍了我需要这个错误的帮助:java.lang.NoSuchMethodError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个Java代码(JPA):

I have this Java code (JPA):

String queryString = "SELECT b  , sum(v.votedPoints) as votedPoint " +
                       " FROM Bookmarks b  " +
                         " LEFT OUTER JOIN Votes v " +
                           " on (v.organizationId = b.organizationId) " + 
                         "WHERE b.userId = 101  " + 
                         "GROUP BY b.organizationId " +
                         "ORDER BY votedPoint ascending ";
EntityManager em = getEntityManager();
Query query = em.createQuery(queryString);
query.setFirstResult(start);
query.setMaxResults(numRecords);
List results = query.getResultList();

我不知道我的查询出了什么问题,因为它给了我这个错误:

I don't know what is wrong with my query because it gives me this error:


java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
        at org.hibernate.hql.antlr.HqlBaseParser.fromJoin(HqlBaseParser.java:1802)
        at org.hibernate.hql.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1420)
        at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1130)
        at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
        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.(HQLQueryPlan.java:101)
        at org.hibernate.engine.query.HQLQueryPlan.(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)

谢谢。

Thanks.

推荐答案

你肯定遇到了你正在使用的hibernate和ANTLR jar版本的问题。在版本2.7.6之前,恢复方法在ANTLR Parser类中不存在?如果你使用的是早期版本的ANTLR,比如2.7.2,那么你会看到这个问题。

You definitely have an issue with the version of hibernate and ANTLR jars that you are using. The recover method wasn't present in the ANTLR Parser class until version 2.7.6? If you are using an earlier version of ANTLR, such as 2.7.2, then you will see this problem.

使用maven可能会导致这种情况,关于Hibernate及其传递依赖关系,但有些东西'更接近';例如Struts的;提供一个不同的早期版本的ANTLR,并且早期版本在您的应用程序中得到解决。

Using maven can cause this sort of situation, where you depend on Hibernate and its transitive dependencies, but something 'closer'; e.g. Struts; providers a different, earlier version of ANTLR and that earlier version gets resolved in your application.

如果您可以提供所涉及的jar版本,我们可以帮助一些更多。一旦你解决了jar版本的问题,你应该得到一个更加暴露的错误信息,它显示了你的HQL表达式有什么问题。

If you can provide the version of jars involved, we would be able to help some more. Once you have fixed the issue with the jar versions, you should get a more revealing error message which shows what is wrong with your HQL expression.

这篇关于我需要这个错误的帮助:java.lang.NoSuchMethodError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆