语法where where子句与标准协商

时间:2015-05-11 13:37:00

标签: java hibernate criteria

我需要在查询中放置一个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子句中想要带来所有&#34; origem&#34; id等于登录用户。 像这样:

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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

使用criteria.addRestrictions(Restrictions.eq(&#34; propertyName&#34;,&#34; propertyValue&#34;);

public List getAll( long idFromLoginBeanOrigin )    {

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

criteria.add(Restrictions.eq(&#34; origem.id&#34;,idFromLoginBeanOrigin));

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

}

我输入它现在可能有拼写错误,请检查!