[
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.