2015-05-11 95 views
1

我需要在我的查詢中放置一個where子句,但我沒有達到正確的語法。語法where條款與條件協商

 /* 
     * Support listing and POSTing back Origem entities (e.g. from inside an 
     * HtmlSelectOneMenu) 
     */ 

     public List<Origem> getAll() 
    { 

     CriteriaBuilder cb = this.entityManager.getCriteriaBuilder(); 
     CriteriaQuery<Origem> criteria = cb.createQuery(Origem.class); 
     Root<Origem> root = criteria.from(Origem.class); 
     return this.entityManager.createQuery(
       criteria.select(root).where()) 
       .getResultList(); 
    } 

在我的where子句中,希望帶有id等於登錄用戶的所有「origem」。 事情是這樣的:

例:select * from origin where origem.id = loginBean.origem.getId

回答

1

只需使用criteria.add(Restrictions.eq())您的標準,我認爲,如果ID是唯一你需要使用.uniqueResult()擺脫你的標準通緝的結果,你的代碼應該是這樣的:

CriteriaBuilder cb = this.entityManager.getCriteriaBuilder(); 
Criteria cr = cb.createCriteria(Origem.class); 
// add the restriction here 
cr.add(Restrictions.eq("id", loginBean.origem.getId)); 
Origem root = (Origem) cr.uniqueResult(); 
0

使用criteria.addRestrictions(Restrictions.eq( 「PROPERTYNAME」, 「的PropertyValue」);

公開名單GETALL(長idFromLoginBeanOrigin) {

CriteriaBuilder cb = this.entityManager.getCriteriaBuilder(); 
    CriteriaQuery<Origem> criteria = cb.createQuery(Origem.class); 

criteria.add(Restrictions.eq( 「origem.id」,idFromLoginBeanOrigin));

Root<Origem> root = criteria.from(Origem.class); 
    return this.entityManager.createQuery(
      criteria.select(root).where()) 
      .getResultList(); 

}

我現在鍵入它也可能有一個錯字,請檢查!