代码之家  ›  专栏  ›  技术社区  ›  mcfly soft

具有子关联条件的CriteriaBuilder。冬眠

  •  1
  • mcfly soft  · 技术社区  · 6 年前

    我有订单(ID,名称)和OneTomany to items(ID,名称):

    我如何才能只获取这些订单,这些订单的名称为“香蕉”与标准构建者:

       @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
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Alexander Petrov    6 年前

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