2

Using JPA 2.0, Java EE 5, Weblogic 10.3 (11g), JDK 6, EclipseLink.

When i attempt to run this:

 CriteriaQuery _criteriaquery = EM.getCriteriaBuilder().createQuery(Clazz);
        Query query = EM.createQuery(_criteriaquery);
        return query.getResultList();

I just get this :

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)

What could be the cause of this error ?

3 Answers 3

1

Your query isn't complited. You should add SELECT and FROM clauses.

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();
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, this solved my problem. I thought putting a variable of type Class was enough.
0

You should use

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

instead of

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

1 Comment

If the code compiles, then Clazz is a variable: Class<?> Clazz = Object.class. The correct would be to write it with lowercase, but it's not really wrong.
0

The same exception can also be thrown if you forget to register your class in persistence.xml.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.