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
|