2015-05-11 90 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(); 

}

我现在键入它也可能有一个错字,请检查!