2014-03-01 26 views
0

我怎麼只得到,從給定用戶JPA如何將過濾器應用於EJB CriteriaQuery中

public List<T> findRangeByUser(int[] range, User user) { 
    javax.persistence.criteria.CriteriaBuilder cb = getEntityManager().getCriteriaBuilder(); 
    javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery(); 
    Predicate condition = cb.equal(cq.from(User.class), user); 
    cq.select(cq.from(entityClass)); 
    cq.where(condition); 
    javax.persistence.Query q = getEntityManager().createQuery(cq); 
    q.setMaxResults(range[1] - range[0]); 
    q.setFirstResult(range[0]); 
    return q.getResultList(); 
} 

實體我應該如何計算策略呢?另請注意,用戶是一個外鍵指的用戶表 的用戶id目前正在返回 非常感謝您

回答

0
public List<T> findRangeByUser(int[] range, User user) { 
    javax.persistence.criteria.CriteriaBuilder cb = getEntityManager().getCriteriaBuilder(); 
    javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery(); 
    javax.persistence.criteria.Root<T> rt = cq.from(entityClass);  
    cq.where(cb.equal(rt.get("useridUser"), user)); 
    javax.persistence.Query q = getEntityManager().createQuery(cq); 
    q.setMaxResults(range[1] - range[0]); 
    q.setFirstResult(range[0]); 
    return q.getResultList(); 
} 
0

的標準建造需要,用於評估用戶ID返回結果的條件的所有項目。例如:

Predicate condition = qb.equal(root.get(field), usuerController.getUserSession().getUser().getIdUser()); 
critera.where(condition); 

用引用用戶標識的SingularAttribute替換「字段」。

+0

@NeerajKrisna謝謝我試過這個,但我得到一個EJB異常,未知的來源,我也更新了查詢 –

相關問題