2011-01-29 22 views
5

jestem pewien jestem widokiem coś oczywistegoHQL z parametrami NoSuchMethodError

następujące zapytanie statyczne działa dobrze

hqlQuery = "select user from User as user where user.id = 'userid' "; 

ale kiedy parametrize zapytanie

hqlQuery = "select user from User as user where user.id = :me "; 
Query query = session.createQuery(hqlQuery); 

mam paskudny stos zrzutu z budowania zapytania. Co ja przeoczyłem?

Exception in thread "main" java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 
at org.hibernate.hql.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:940) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4997) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1413) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4471) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3947) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301) 
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244) 
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254) 
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185) 
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136) 
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:124) 
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:1770) 

Odpowiedz

4

Wygląda jak mieszane niekompatybilne wersje słoików Hibernate (prawdopodobnie jar ANTLR ma złą wersję).

13

Problem tutaj jest konflikt między dwoma plikami jar ANT (a mianowicie: antlr-2.7.6.jar z biblioteki Hibernate Jar & antlr-2.7.2 z struts-1.3) w projekcie. To wydaje się być szczególnym problemem w przypadku aplikacji Struts-1.3 & Hibernate.

Proszę usunąć antlr-2.7.2.jar z projektu (/ WEB-INF/lib folderu) & powinien działać dobrze .. Daj mi znać, jeśli to działa ..

+0

projekt zmienił kierunek, a pytanie jest teraz Moot (do mnie). Używam rozpórek 1.2. źródłem złego słoika może być z serwera Weblogic 9.x – Aaron

+0

tak to działało dla mnie! – CrakC

2

Można to:

<dependency> 
    <groupId>org.apache.struts</groupId> 
    <artifactId>struts-core</artifactId> 
    <version>1.3.10</version> 

    <exclusions> 
     <exclusion> 
      <groupId>antlr</groupId> 
      <artifactId>antlr</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
+2

Twoja odpowiedź zostałaby znacznie poprawiona, gdybyś mógł wyjaśnić, co się dzieje i dlaczego. – Ben

1

Spróbuj dodać tę zależność w pom.xml:

<dependency> 
     <groupId>antlr</groupId> 
     <artifactId>antlr</artifactId> 
     <version>2.7.7</version> 
    </dependency> 
Powiązane problemy