带有Hibernate的org.hibernate.hql.ast.QuerySyntaxException
我是使用Hibernate和Java的新手。 我收到以下exception。 我在网上找到关于这个错误的东西似乎没有帮助。 有任何想法吗? 例外情况:
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: ApplPerfStats is not mapped [select count(c) from ApplPerfStats c] at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:601) at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96) at com.icesoft.icefaces.samples.datatable.jpa.CustomerDAO.findTotalNumberCustomers(CustomerDAO.java:89) at com.icesoft.icefaces.samples.datatable.ui.SessionBean.getDataPage(SessionBean.java:189) at com.icesoft.icefaces.samples.datatable.ui.SessionBean.access$0(SessionBean.java:185) at com.icesoft.icefaces.samples.datatable.ui.SessionBean$LocalDataModel.fetchPage(SessionBean.java:245) at com.icesoft.icefaces.samples.datatable.ui.PagedListDataModel.getPage(PagedListDataModel.java:121) at com.icesoft.icefaces.samples.datatable.ui.PagedListDataModel.getRowCount(PagedListDataModel.java:100) at com.icesoft.faces.component.datapaginator.DataPaginator.isModelResultSet(DataPaginator.java:1091) at com.icesoft.faces.component.datapaginator.DataPaginatorRenderer.encodeBegin(DataPaginatorRenderer.java:201)
这叫做的地方:
@SuppressWarnings("unchecked") public Long findTotalNumberCustomers() { EntityManagerHelper.log("finding number of Customer instances", Level.INFO, null); try { String queryString = "select count(c) from ApplPerfStats c"; return (Long) getEntityManager().createQuery(queryString).getSingleResult(); } catch (RuntimeException re) { EntityManagerHelper.log("find number of Appl_perf_stats failed", Level.SEVERE, re); throw re; } }
映射到数据库表的类:
package com.icesoft.icefaces.samples.datatable.jpa; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "Appl_perf_stats", uniqueConstraints = {}) public class ApplPerfStats implements java.io.Serializable { .....
谢谢,
谭
尝试在persistence.xml
文件中的persistence-unit
下添加一个class
元素。
com.icesoft.icefaces.samples.datatable.jpa.ApplPerfStats ...
我没有做过比JPA / EntityManager更多的东西,所以我不知道是否有办法添加整个包。 AFAIK,当使用hibernate.cfg.xml
,必须直接指定每个持久化类。
在我开始使用完整的类名之前,它发生在我身上,例如:
String queryString = "select count(c) from com.my.classes.package.ApplPerfStats c";
但我不喜欢这种方法,因为它的重构 – 不友好。 一个更容易处理的是:
String queryString = "select count(c) from " + ApplPerfStats.class.getName() + c";
javashlook的解决方案似乎是一个快捷方式 – 但它增加了更多的XML配置,我试图避免。 如果只有基于注释的方式来指定…
我遇到了同样的问题,我通过在我的pom.xml中添加aspectj条目来解决,见下文。 我想如果你使用注释是有道理的。 否则,您需要在XML文件中指定映射。 我从一个使用带有JPA注释的jar的项目中遇到了这个问题。
org.codehaus.mojo aspectj-maven-plugin 1.2 org.aspectj aspectjrt ${aspectj.version} org.aspectj aspectjtools ${aspectj.version} your.project your.artifact compile test-compile true org.springframework spring-aspects 1.6 1.6
您应该指定一个列来进行计数
select count(c.someColumn) from ApplPerfStats c
或尝试计数(*)
select count(*) from ApplPerfStats c
我遇到了这个问题,但在我的情况下问题是由于gradle版本。
当我将系统从linux更改为mac时,我不得不从gradle-1.0-milestone-3切换到gradle-1.0-milestone-4,因为里程碑-3在OSX中不起作用。 在gradle-1.0-milestone-4中我遇到了同样的问题,然后我不得不将我的gradle版本降级为gradle-1.0-milestone-1。 现在它工作正常
我也面临这个问题,由此解决…
您尚未在persistence.xml配置文件中声明您的实体类:
我知道这件事已经很长时间了,但上述答案都没有解决我的问题。
我已经在persistence.xml文件中声明了该实体。 最后,整个问题只是实体的名称在我的系统中区分大小写 。
这个jpql错了
SELECT u FROM user u WHERE userId = 1?
但这个工作正常
SELECT u FROM User u WHERE userId = 1?
- Hibernate持续vs保存
- 在Spring / JPA / Mysql / Tomcat应用程序中分析Connection Closed Exception
- Hibernate错误:org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话关联
- Hibernate在单个表中对复合外键和主键进行一对一映射
- HQL更新是否清除了二级缓存?
- 为什么在Hibernate中不建议使用“hibernate.connection.autocommit = true”?
- Discriminator,WrongClassException JPA和Hibernate后端
- 如何使用hibernate生成Custom Id,同时它必须是表的主键
- Hibernate:Hibernate总是使用对象代理吗?