JPA QueryException - 必须提供引用类

时间:2013-11-01 20:54:25

标签: java jpa eclipselink

使用JPA 2.0,Java EE 5,Weblogic 10.3(11g),JDK 6,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)

导致此错误的原因是什么?

2 个答案:

答案 0 :(得分:1)

您的查询未被完成。您应该添加SELECTFROM子句。

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();

答案 1 :(得分:0)

你应该使用

CriteriaQuery _criteriaquery = EM.getCriteriaBuilder().createQuery(Clazz.class);

而不是

CriteriaQuery _criteriaquery = EM.getCriteriaBuilder().createQuery(Clazz);