Skip to main content

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

It will be something like this,

public List<Mensajes> leerMensajes(BigInteger userId) {
        javax.persistence.criteria.CriteriaBuilder cb =
getEntityManager().getCriteriaBuilder();
        javax.persistence.criteria.CriteriaQuery cq = cb.createQuery();
        Root<Mensajes> mensajes = query.from(Mensajes.class);
        cq.select(mensajes);
        cq.where(cb.equal(mensajes.get("estado"), BigInteger.ZERO)
             .and(cb.equal(mensajes.get("userid"), userId)));
        return getEntityManager().createQuery(cq).getResultList();
}

Or you could just use JPQL,

public List<Mensajes> leerMensajes(BigInteger userId) {
        return getEntityManager().createQuery("Select m from Mensajes m
where m.estado = 0 and m.userid = :userId").setParameter("userId",
userId).getResultList();
}


Oggie wrote:
> 
> 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
> 
> 


-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland 
http://www.eclipse.org/eclipselink/
 EclipseLink ,  http://www.oracle.com/technology/products/ias/toplink/
TopLink 
Wiki:  http://wiki.eclipse.org/EclipseLink EclipseLink , 
http://wiki.oracle.com/page/TopLink TopLink 
Forums:  http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink , 
http://www.nabble.com/EclipseLink-f26430.html EclipseLink 
Book:  http://en.wikibooks.org/wiki/Java_Persistence Java Persistence 
-- 
View this message in context: http://old.nabble.com/CriteriaQuery.where%28%29---tp30170443p30181133.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top