Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] CriteriaQuery.where()??

Hi,
 
I am developing a workflow and I need to optimize a query form inside an Ejb 3.1
 
My code is as follows,
 
from an abstract facade I have,
 
public List<T> findAll() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        return getEntityManager().createQuery(cq).getResultList();
}
 
when I create the Ejb I extends this abstract facade and the method looks for an entity 'Mensajes' like,
 
public List<Mensajes> findAll() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(Mensajes.class));
        return getEntityManager().createQuery(cq).getResultList();
}
 
so my method is,
 
public List<Mensajes> leerMensajes(BigInteger userId) {
 
        List<Mensajes> aList = findAll();
 
        List<Mensajes> result = new ArrayList<Mensajes>();
        for(Mensajes m: aList){
            if(( m.getEstado() == BigInteger.ZERO ) && (m.getUserid().equals(userId)))
                result.add(m);
        }
 
        return result;
}
 
And I am thinking of something like the following code,
 
public List<Mensajes> findAll() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(Mensajes.class));
        cq.where(Predicate pred);
        return getEntityManager().createQuery(cq).getResultList();
}
 
where my Predicate must be as the if clause in leerMensajes()
 
But I do not know how to get it.
 
Thanks in advence,
Jose

Back to the top