2011-01-29 21 views
5

Estoy seguro de que se me escapa algo obvioHQL con parámetros NoSuchMethodError

la siguiente consulta estática funciona bien

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

pero cuando parametrizar la consulta

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

recibo una pila desagradable volcado de construir la consulta. ¿Qué estoy pasando por alto?

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) 

Respuesta

4

Parece que usted mezcló versiones incompatibles de frascos de Hibernate (probablemente frasco antlr tiene una versión incorrecta).

13

Problema aquí hay un conflicto entre los dos archivos jar ANT (es decir: antlr-2.7.6.jar de la biblioteca Hibernate Jar & antlr-2.7.2 de struts-1.3) en su proyecto. Esto parece ser un problema peculiar con Struts-1.3 & aplicaciones Hibernate.

Por favor, elimine antlr-2.7.2.jar de su proyecto (/ WEB-INF/lib) & que debería funcionar bien .. Quiero saber si funciona ..

+0

el proyecto cambió de dirección, y la pregunta es ahora discutible (a mí). Estoy usando struts 1.2. fuente de jar malo podría ser de Weblogic Server 9.x – Aaron

+0

sí, funcionó para mí! – CrakC

2

Puede esto:

<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

Su respuesta mejoraría considerablemente si pudiera explicar lo que está sucediendo y por qué. – Ben

1

Pruebe añadir esta dependencia en su pom.xml:

<dependency> 
     <groupId>antlr</groupId> 
     <artifactId>antlr</artifactId> 
     <version>2.7.7</version> 
    </dependency> 
Cuestiones relacionadas