首页 > 解决方案 > 使用 CiriteriaBuilder JPA 创建联接查询

问题描述

我需要使用 CriteriaBuilder 创建以下查询

  SELECT Orders.OrderID, Customers.CustomerName
  FROM Orders
  INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

CriteriaBuilder 代码:

  CriteriaBuilder builder = manager.getCriteriaBuilder();
    CriteriaQuery<Customers> criteriaQuery = builder.createQuery(Customers.class);
    Root<Customers> root = criteriaQuery.from(Customers.class);
    Join<Customers, Orders> emailTemplateMaster = root.join(Customers_.customerId, JoinType.INNER);

不需要知道剩余代码如何关联表格

我已经使用了加入功能。但我的问题是如何获取带有订单的客户列表。

标签: hibernatejpa

解决方案


试试这个方法。

     CriteriaQuery<String> q = cb.createQuery(String.class);
     Root<Order> order = q.from(Order.class);
     q.select(order.get("shippingAddress").<String>get("state"));

     CriteriaQuery<Product> q2 = cb.createQuery(Product.class);
     q2.select(q2.from(Order.class)
                 .join("items")
                 .<Item,Product>join("product"));

链接:https ://docs.oracle.com/javaee/6/api/javax/persistence/criteria/CriteriaQuery.html


推荐阅读