Java JPA QueryException-必须提供引用类
使用JPA2.0、JavaEE5、WebLogic10.3(11g)、JDK6和EclipseLink 当我尝试运行此命令时:Java JPA QueryException-必须提供引用类,java,jpa,eclipselink,Java,Jpa,Eclipselink,使用JPA2.0、JavaEE5、WebLogic10.3(11g)、JDK6和EclipseLink 当我尝试运行此命令时: CriteriaQuery _criteriaquery = EM.getCriteriaBuilder().createQuery(Clazz); Query query = EM.createQuery(_criteriaquery); return query.getResultList(); 我只知道: Caused by:
CriteriaQuery _criteriaquery = EM.getCriteriaBuilder().createQuery(Clazz);
Query query = EM.createQuery(_criteriaquery);
return query.getResultList();
我只知道:
Caused by: Exception [EclipseLink-6029] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.QueryException
Exception Description: A reference class must be provided.
Query: ReportQuery()
at org.eclipse.persistence.exceptions.QueryException.referenceClassMissing(QueryException.java:1004)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkDescriptor(ObjectLevelReadQuery.java:744)
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:661)
此错误的原因可能是什么?您应该使用
CriteriaQuery _criteriaquery = EM.getCriteriaBuilder().createQuery(Clazz.class);
而不是
CriteriaQuery _criteriaquery = EM.getCriteriaBuilder().createQuery(Clazz);
您的查询未完成。您应该添加
SELECT
和FROM
子句
CriteriaQuery<SomeEntity> _criteriaquery = EM.getCriteriaBuilder().createQuery(SomeEntity.class);
Root<SomeEntity> selector = _criteriaquery.from(SomeEntity.class); // FROM
_criteriaquery.select(selector); // SELECT
Query query = EM.createQuery(_criteriaquery);
return query.getResultList();
CriteriaQuery\u CriteriaQuery=EM.getCriteriaBuilder().createQuery(SomeEntity.class);
根选择器=_criteriaquery.from(SomeEntity.class);//从…起
_criteriaquery.选择(选择器);//挑选
Query Query=EM.createQuery(\u criteriaquery);
返回query.getResultList();
谢谢,这解决了我的问题。我认为放一个Class类型的变量就足够了。如果代码已经编译,那么Clazz
就是一个变量:Class Clazz=Object.Class
。正确的做法是用小写字母书写,但这并不是真的错。