我试图以这种方式在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();
我觉得这个错误:
ספט24,2013
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。
我在My项目中检查了maven依赖项我有Maven:antlr:antlr:2.7.2。
这里可能有什么问题?
感谢。
答案 0 :(得分:1)
图书馆冲突。我想你在web-inf / lib中加载了另一个版本的antlrXXX.jar。这是在休眠依赖的那个之前加载的。 请用已使用的hibernate版本完成问题,以便我可以回复为completness添加正确的依赖项。
更新: 评论之后,冲突的版本是2.7.2。 使用mvn dependency:tree检查谁正在导入2.7.2并在pom中排除该传递依赖。
答案 1 :(得分:0)
如果报告了这样的错误:然后你去这个WEB WEB-INF下你的tomcat应用程序在lib下antlr-2.7.2.jar将被删除。
答案 2 :(得分:0)
我最近收到错误java.lang.NoSuchMethodError:antlr.collections.AST.getLine()
当antlr jar文件与struts 1.3和hibernate 3发生冲突时会出现此错误。您需要通过单击myeclipse Windows &gt;&gt从struts 1.3中删除antlr 2.7.2 jar文件; 偏好设置&gt;&gt; MyEclipse &gt;&gt; 项目库&gt;&gt;的 Struts2的强>
取消选中antlr 2.7.2。
希望有所帮助......