使用 CiriteriaBuilder JPA 创建联接查询



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

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

标准生成器代码:

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

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

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

试试这个方法。

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

最新更新