java - 与条件协商的语法 where 子句

标签 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 子句中想要将所有 id 等于登录用户的“origem”。 像这样的事情:

例如:从原点选择 *,其中 origem.id = loginBean.origem.getId

最佳答案

只需使用 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();

关于java - 与条件协商的语法 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30169161/

相关文章:

java - Hibernate:使用集合条件(HashSet)

java - 如何使用 Hibernate Criteria API 从连接表中选择不同的表?

java - 确定哪个方法抛出异常

java - 如何制作一个在运行时更新的 "modular"Java 程序?

hibernate - 设置查询超时抛出 ORA-12592 : TNS:bad packet

mysql - Doctrine2 Criteria() 生成错误的 MySQL 查询

java - hadoop-yarn-server-nodemanager 上的 Hadoop 2.6.0 Maven 编译错误

java - 如何从终端使用junit

java - 在 Spring Data 中进行事务性删除?

java - 如何在 hibernate 状态下规范化数据库? (重复值不会一次又一次保存)