NullPointerException in CriteriaQueryImpl when using multiselect [message #659930] |
Wed, 16 March 2011 04:43  |
Eclipse User |
|
|
|
Hi
I get a NullPointerException when caling EntityManager.createQuery(criteria)
at org.eclipse.persistence.internal.jpa.querydef.CriteriaQueryI mpl.createCompoundQuery(CriteriaQueryImpl.java:543)
(I am using EclipseLink 2.1 from within Weblogic 10.3.4, I have also tried EclipseLink 2.3)
Here is the code:
public List<Tuple> getTopUsage( int lenght) {
CriteriaBuilder builder = mEntityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> criteria = builder.createTupleQuery();
SingularAttribute<Cdr, String> attribute = Cdr_.callingParty;
Root<Cdr> cdr = criteria.from(Cdr.class);
criteria.multiselect(cdr.get(attribute), builder.count(cdr.get(attribute)));
criteria.where(builder.conjunction());
criteria.groupBy(cdr.get(attribute));
TypedQuery<Tuple> query = mEntityManager.createQuery(criteria);
query.setMaxResults(lenght);
List<Tuple> list = query.getResultList();
return list;
}
Checking the code in EclipseLink then it (createCompoundQuery) assumes that the criteriaQuery's where member always has a "current node" and that is not the case with a predicate like the one I can get from the builder like this: builder.conjunction().
(in my real code I pass in some parameters to build up the 'where' clause)
Here is the stacktrace.
java.lang.NullPointerException
at org.eclipse.persistence.internal.jpa.querydef.CriteriaQueryI mpl.createCompoundQuery(CriteriaQueryImpl.java:543)
at org.eclipse.persistence.internal.jpa.querydef.CriteriaQueryI mpl.translate(CriteriaQueryImpl.java:715)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.creat eQuery(EntityManagerImpl.java:1313)
at sun.reflect.GeneratedMethodAccessor168.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at weblogic.persistence.QueryProxyImpl.instantiateQuery(QueryPr oxyImpl.java:56)
at weblogic.persistence.QueryProxyImpl.createQuery(QueryProxyIm pl.java:74)
at weblogic.persistence.QueryProxyImpl.getResultList(QueryProxy Impl.java:145)
at xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.CdrBeanImpl.getTopUsage(CdrBea nImpl.java:230)
Thanks
Lucas
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.09442 seconds