2016-04-29 98 views
0

如何在我的示例中使用JPA CriteriaBuilder如hibernate Criteria進行此選擇?JPA CriteriaBuilder獲得具有評論的列表實體

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

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; 

回答

0

第一個查詢

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

JPA第一次查詢

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(); 

第二個查詢

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第二查詢

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())));