user5620472
user5620472

Reputation: 2882

JPA CriteriaBuilder get list entities with criteries

How can I make this select with JPA CriteriaBuilder like hibernate Criteria in my example?

Criteria criteria = getSession().createCriteria(Payment.class);
        criteria.setFirstResult(0);
        criteria.setMaxResults(1);
        criteria.add(Restrictions.eq("statusStepOne", 0));
        List list = criteria.list();

and

Criteria criteria = getSession().createCriteria(Payment.class);
        criteria.add(Restrictions.eq("oid", oid));
        criteria.add(Restrictions.between("dateCreated", Utils.getDateMinus(1), new Date()));
        List list = criteria.list();
        return (List<Payment>)list;

Upvotes: 0

Views: 5087

Answers (1)

RubioRic
RubioRic

Reputation: 2468

FIRST QUERY

   Criteria criteria = getSession().createCriteria(Payment.class);
   criteria.setFirstResult(0);
   criteria.setMaxResults(1);
   criteria.add(Restrictions.eq("statusStepOne", 0));
   List list = criteria.list();

JPA FIRST QUERY

   CriteriaBuilder cb = em.getCriteriaBuilder();
   CriteriaQuery<Payment> query = cb.createQuery(Payment.class);

   Root<Payment> p = query.from(Payment.class);
   query.select(p);
   query.where(cb.equal(p.get("statusStepOne"), 0));
   query.setFirstResult(0);
   query.setMaxResults(1);

   List<Payment> list = query.getResultList();

SECOND QUERY

   Criteria criteria = getSession().createCriteria(Payment.class);
   criteria.add(Restrictions.eq("oid", oid));
   criteria.add(Restrictions.between("dateCreated", Utils.getDateMinus(1), new Date()));
   return (List<Payment>) criteria.list(); // I've removed useless asignment

JPA SECOND QUERY

  CriteriaBuilder cb = em.getCriteriaBuilder();
  CriteriaQuery<Payment> query = cb.createQuery(Payment.class);

  Root<Payment> p = query.from(Payment.class);
  query.select(p);
  query.where(cb.equal(p.get("oid"), oid)
       .and(cb.between(p.get("dateCreated"), Utils.getDateMinus(1), new Date())));

Upvotes: 1

Related Questions