hibernate - 使用 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);
不需要知道剩余代码如何关联表格
我已经使用了加入功能。但我的问题是如何获取带有订单的客户列表。
解决方案
试试这个方法。
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
推荐阅读
- android - 以编程方式约束布局不使用所有分配的空间(不填充宽度)
- tensorflow - Keras 中的打印验证丢失
- java - 订阅/迭代 Mono 列表
- reactjs - 无法导出带有 getServerSideProps 的 nextjs 页面
- django - 将 PostgreSQL 从 9.6 升级到 11
- c++ - MainWindow 中的子窗口显示一秒钟然后消失
- html - 使 v-treeview 与 flexbox 中的行具有相同的高度
- imagemagick - 可靠地将图像水平压缩为 1 列像素,阈值为 100%
- vue.js - 在带有表单的几页上进行完全静态给出问题
- java - 是否可以在 Ubuntu 中将 jdk 1.8.0_252 更改为 jdk 1.8.0_251?