与儿童协会标准CriteriaBuilder。过冬

问题描述 投票:1回答:1

我有一对多项(ID,姓名)的订单(ID,姓名):

我怎么能只获取这些命令它有一个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 hibernate-criteria criteria-api
1个回答
0
投票

你需要使用一个加入。周围的东西这些行:

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"));
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.