java - CriteriaBuilder 具有子关联的标准。 hibernate

标签 java hibernate criteria criteria-api

我有订单(id,名称),其中 oneToMany 到项目(id,名称):

如何使用 CriteriaBuilder 只获取包含名称为“banana”的商品的订单:

   @Override
    public Order orderQuery() {

        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery criteriaQuery = cb.createQuery(Order.class);
        Root root = criteriaQuery.from(Order.class);
        root.fetch("items", JoinType.INNER);
        CriteriaQuery d = criteriaQuery.select(root);

        criteriaQuery.where(cb.equal(root.get("item.name"), "banana"));
        return (Order)this.entityManager.createQuery(criteriaQuery).getSingleResult());

    }

我收到错误:

Unable to locate Attribute  with the the given name [item.name] on

最佳答案

您需要使用联接。围绕这些线的内容:

Join< Order ,Item> joinItems = root.join("items");
criteriaQuery.where(cb.equal(joinItems.get("item.name"), "banana"));

或者您可以执行以下操作:

criteriaQuery.where(cb.equal(root.get("items").get("name"), "banana"));

关于java - CriteriaBuilder 具有子关联的标准。 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54572572/

相关文章:

java - 如何在 Selenium 中使用 CSS 选择器找到 TinyMCE 编辑器的主体?

java - 模拟一个具有一些由随机值生成的字段的类?

java - 如何在链接表上设置hibernate生成的外键约束名称?

hibernate - 如何在 Eclipse 中连接 Hibernate 和 PostgreSQL?

java - 如何在 JPA 中从表达式转换为 CriteriaBuilder

java - Hibernate session.createCriteria 与 session.get 性能对比

Yii 标准 : condition for relation

java - 如何在 Struts2 中使用 Bean 将对象从 Action 类传递到 JSP?

java - 当我手动更改 firebase 数据库中的值时,我在 ListView 中创建更多项目,而不是更新 ListView 中的值

java - 如何在不使用通配符扩展的情况下将 * 传递给 java 程序?