我有JPA和JPQL的问题。我有下一个问题:
String query="SELECT c from Cliente c";
Query quer=em.createQuery("Select c from Cliente c");
List<Cliente> lista= quer.getResultList();
当我执行该操作时,我遇到以下错误:
[java]线程“main”中的异常java.lang.NoClassDefFoundError:antlr / RecognitionException [java] org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:59) [java] org.hibernate.engine.query.spi.HQLQueryPlan。(HQLQueryPlan.java:103) [java] at org.hibernate.engine.query.spi.HQLQueryPlan。(HQLQueryPlan.java:80) [java] org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168) [java] org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221) [java] org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199) [java] org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735) [java] org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291) [java] at test.TestCliente.main(TestCliente.java:35) [java]引起:java.lang.ClassNotFoundException:antlr.RecognitionException [java] at java.net.URLClassLoader $ 1.run(URLClassLoader.java:366) [java] at java.net.URLClassLoader $ 1.run(URLClassLoader.java:355) [java] java.security.AccessController.doPrivileged(Native Method) [java] at java.net.URLClassLoader.findClass(URLClassLoader.java:354) [java] java.lang.ClassLoader.loadClass(ClassLoader.java:423) [java] at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) [java] java.lang.ClassLoader.loadClass(ClassLoader.java:356) [java] ... 9更多
CLiente类是可访问的,但我无法进行查询。
任何人都知道为什么?
编辑:在classpath中是RecognitionException类,我可以导入他,所以我不知道是什么问题。
答案 0 :(得分:4)
你很可能有错误的antlr jar。我只是在一个使用hibernate的maven项目中查找过。
我有hibernate-core-4.1.8和antlr-2.7.7,它可以在那里工作。
您始终可以在特定版本的hibernate-core的pom.xml中查找正确的版本。
请务必修复两个位置以获取正确的版本号 例如。对于4.1.8:
http://repo1.maven.org/maven2/org/hibernate/hibernate-core/4.1.8.Final/hibernate-core-4.1.8.Final.pom
^ ^ ^ ^ ^ ^
或浏览到版本概述:http://repo1.maven.org/maven2/org/hibernate/hibernate-core/并选择您的版本,然后选择“pom.xml”。在dependencies
部分查看antlr
条目,然后在那里。