Java JPA QueryException-必须提供引用类

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:

使用JPA2.0、JavaEE5、WebLogic10.3(11g)、JDK6和EclipseLink

当我尝试运行此命令时:

 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
。正确的做法是用小写字母书写,但这并不是真的错。