java - HQL返回java.lang.NoSuchMethodError

标签 java hibernate hql

我正在尝试以这种方式在 HQL 中设置参数:

 Query query = session.createQuery("from Device d " +
                    "left join fetch d.tradeInOldDevice " +
                    "left join fetch d.tradeInNewDevice " +
                    "left join fetch d.warranty "  +
                    "where d.owningCompany.customerRefId =:customerId ");


              query.setString("customerId", "someHardCodeCustomerId");


            Set<Device> customerDevices= (Set<Device>) query.list();

我发现了这个错误:

2013 年 24 日

2:36:02 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [ServicesServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
    at org.hibernate.hql.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:945)

hibernate 依赖:

 <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.0.1.Final</version>
        </dependency>


<!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>3.6.10.Final</version>
        </dependency>

我正在 Spring 容器内的 tomcat 上运行 hibernate。

我在我的项目中检查了 Maven 依赖项,我有 Maven:antlr:antlr:2.7.2。

这里可能出了什么问题?

谢谢。

最佳答案

库冲突。我认为您在 web-inf/lib 中加载了另一个版本的antlrXXX.jar。它是在 hibernate 所依赖的之前加载的。 请使用使用的 hibernate 版本完成问题,以便我可以回复添加正确的依赖项以确保完整性。

更新: 评论后冲突的版本是2.7.2。 使用 mvn dependency:tree 检查谁正在导入 2.7.2,并在 pom 中排除该传递依赖项。

关于java - HQL返回java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980597/

相关文章:

java - 是否有类似于 Callable 但带有参数的接口(interface)?

mysql - Spring boot jpa H2兼容模式MYSQL不工作

java - 如何配置intellij idea使用hibernate持久化工具并从外部jar文件读取映射文件

java - 使用 "pure"Hibernate/JPA 一次更新唯一列中的多个条目

hadoop - 如何在 Hadoop 中编写 HQL 表达式以验证 X9999 等特定格式的字母数字字段的格式

java - XSD 生成一个 MAP<String, Boolean> 属性

java - Spring Query By Example 使用 "OR"

java - Executors.newFixedThreadPool() - 这个操作有多昂贵

java - 如何在 Hibernate native 查询中使用常量?

java - 为什么我的事务在 MySQL 中死锁?