Ajuda com Criteria

Tenho a classe Pedido, que tem uma ArrayList

A criteria abaixo não está funcionando, dá um nullpointer em uma chamada do hibernate…

[code]DetachedCriteria mainCriteria = DetachedCriteria.forClass(Pedido.class);
//…
DetachedCriteria produtoCriteria = DetachedCriteria.forClass(Produto.class);
produtoCriteria.add(Restrictions.between(“dataLiberacao”, dataAberturaInicio, dataAberturaFim));

mainCriteria.createAlias(“produtos”, “produto”);
mainCriteria.add(Subqueries.in(“produto”, produtoCriteria));[/code]

Eu não entendo mto de criterias, não sei se estou fazendo certo, mas oq eu queria fazer era buscar todos os produtos dentro de uma faixa de data e achar todos os pedidos que tem esses produtos…
Alguma luz?

up…
é meio urgente pessoal, se puderem ajudar fico agradecido.

tem q explicar melhor algumas coisas…
dataLiberação é do produto ?

na classe pedido o arrayList esta declarado como produtos ?

cole a exception

Sim

Sim

Stack:
javax.ejb.EJBTransactionRolledbackException: EJB Exception: ; nested exception is: java.lang.NullPointerException
at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:791)
at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:483)
at weblogic.ejb.container.internal.BaseLocalObject.postInvokeTxRetry(BaseLocalObject.java:421)
at br.com.nomedaempresaomitido.util.CriteriaServiceBean_eiq2m8_CriteriaServiceLocalImpl.countTotalResults(CriteriaServiceBean_eiq2m8_CriteriaServiceLocalImpl.java:77)

Sendo que esse nullpointer disparado em countTotalResults acontece na chamada de
mainCriteria.setProjection(Projections.rowCount()).uniqueResult();

O código completo desse método é

public int countTotalResults(DetachedCriteria detachedCriteria) { Criteria mainCriteria = detachedCriteria.getExecutableCriteria(this.getSession(this.entityManager)); Integer count = (Integer) mainCriteria.setProjection(Projections.rowCount()).uniqueResult(); detachedCriteria.setProjection(null).setResultTransformer(CriteriaSpecification.ROOT_ENTITY); return count; }

Encontrei uma stack no log que deve ajudar mais:

java.lang.NullPointerException
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getProjectedTypes(CriteriaQueryTranslator.java:341)
at org.hibernate.criterion.SubqueryExpression.createAndSetInnerQuery(SubqueryExpression.java:153)
at org.hibernate.criterion.SubqueryExpression.toSqlString(SubqueryExpression.java:69)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:357)
at org.hibernate.loader.criteria.CriteriaJoinWalker.(CriteriaJoinWalker.java:102)
at org.hibernate.loader.criteria.CriteriaJoinWalker.(CriteriaJoinWalker.java:82)
at org.hibernate.loader.criteria.CriteriaLoader.(CriteriaLoader.java:91)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1578)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:328)
at br.com.omitido.util.CriteriaServiceBean.countTotalResults(CriteriaServiceBean.java:37)

Resolvido… segue a solução, quem sabe não ajuda alguém futuramente

DetachedCriteria mainCriteria = DetachedCriteria.forClass(Pedido.class); mainCriteria.createAlias("produtos", "p").add( Restrictions.between("p.dataLiberacao", dataAberturaInicio, dataAberturaFim));