jpa多表关联动态查询
时间: 2023-07-13 15:34:18 浏览: 110
Spring Data JPA 实现多表关联查询的示例代码
对于 JPA 多表关联动态查询,可以使用 JPA Criteria API 或者 JPQL 来实现。以下是其中一种实现方式:
1. 创建 JPA CriteriaBuilder 对象:
```
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
```
2. 创建查询的根实体对象:
```
CriteriaQuery<Order> cq = cb.createQuery(Order.class);
Root<Order> orderRoot = cq.from(Order.class);
```
3. 创建 Join 对象,关联查询的实体:
```
Join<Order, Customer> customerJoin = orderRoot.join("customer", JoinType.INNER);
```
4. 创建 Predicate 对象,添加查询条件:
```
List<Predicate> predicates = new ArrayList<>();
if(StringUtils.isNotBlank(orderNo)){
predicates.add(cb.like(orderRoot.get("orderNo"), "%" + orderNo + "%"));
}
if(StringUtils.isNotBlank(customerName)){
predicates.add(cb.like(customerJoin.get("name"), "%" + customerName + "%"));
}
```
5. 将 Predicate 对象添加到 CriteriaQuery 对象中:
```
cq.where(predicates.toArray(new Predicate[predicates.size()]));
```
6. 执行查询并返回结果集:
```
TypedQuery<Order> query = entityManager.createQuery(cq);
List<Order> result = query.getResultList();
```
以上是使用 JPA Criteria API 实现的多表关联动态查询的示例代码。另外,JPQL 也可以实现多表关联动态查询,但需要手写 SQL 语句,相对来说较为繁琐。
阅读全文