【问题标题】:CriteriaBuilder with criteria on the child associations . HibernateCriteriaBuilder 与子关联的标准。休眠
【发布时间】:2019-02-07 11:42:02
【问题描述】:

我有订单(id,name)与 oneToMany 到项目(id,name):

如何使用 CriteriaBuilder 仅获取这些具有名称为“香蕉”的项目的订单:

   @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

【问题讨论】:

    标签: java hibernate criteria criteria-api


    【解决方案1】:

    您需要使用联接。这些线周围的东西:

    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"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-16
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      相关资源
      最近更新 更多