hibernate 两个表使用where关联查询
时间: 2024-03-23 10:38:32 浏览: 77
在 Hibernate 中进行两个表的关联查询,可以通过 HQL 或者 Criteria API 两种方式来实现。
1. 使用 HQL 进行两个表的关联查询
可以通过 HQL 中的 JOIN 和 WHERE 子句来进行两个表的关联查询,示例如下:
```
String hql = "select u from User u join u.orders o where o.orderId = :orderId";
List<User> users = session.createQuery(hql, User.class)
.setParameter("orderId", orderId)
.getResultList();
```
上面的代码中,我们使用了 JOIN 子句来关联 User 和 Order 两个实体对象,使用 WHERE 子句来筛选出订单编号为给定值的订单,并返回对应的用户列表。
2. 使用 Criteria API 进行两个表的关联查询
使用 Criteria API 进行两个表的关联查询,可以通过 Root 和 Join 对象来进行关联操作,示例如下:
```
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<User> query = cb.createQuery(User.class);
Root<User> root = query.from(User.class);
Join<User, Order> join = root.join("orders", JoinType.INNER);
query.where(cb.equal(join.get("orderId"), orderId));
List<User> users = session.createQuery(query).getResultList();
```
上面的代码中,我们使用了 Join 和 Root 对象来进行两个实体对象的关联操作,使用 equal 方法来筛选出订单编号为给定值的订单,并返回对应的用户列表。
阅读全文