请记住,查询是多态的。
CriteriaQuery<Order> q = cb.createQuery(Order.class);
Root<Order> order = q.from(Order.class);
Join<Order,Article> article = order.join("articles", JoinType.LEFT);
q.select(order)
.where(cb.equal(article.type(), Car.class));
您可以使用 type() 限制类的类型以及您只想检索的子类。
为了获得颜色属性,您必须执行 TypedQuery 并对其进行迭代。
TypedQuery<Order> qw = em.createQuery(q);
List<Order> orderList = qw.getResultList();
从 orderList.get(index).getArticles().get(indexOfArticles).getColor();
为汽车颜色添加一个子句。
CriteriaQuery<Order> q = cb.createQuery(Order.class);
Root<Order> order = q.from(Order.class);
Join<Order,Car> article = order.join("articles", JoinType.LEFT);
q.select(order)
.where(cb.equal(article.get("color"), "red"),cb.equal(article.type(), Car.class));