jpa连表条件查询
时间: 2023-06-28 12:07:26 浏览: 43
JPA 的连表查询可以使用 JPQL 或 Criteria API 进行构建,下面给出两种实现方式。
1. JPQL
JPQL 可以使用 JOIN 关键字进行连表查询,同时通过 ON 关键字指定连接条件。例如,假设有两个实体类 `User` 和 `Order`,它们之间通过 `userId` 字段关联,可以使用以下 JPQL 查询语句:
```java
SELECT o FROM Order o JOIN User u ON o.userId = u.id WHERE u.name = :name
```
这里使用 `JOIN` 关键字连接 `Order` 和 `User` 表,然后通过 `ON` 关键字指定连接条件,最后使用 `WHERE` 关键字添加查询条件。
2. Criteria API
Criteria API 可以使用 `join()` 方法进行连表查询,同时使用 `equal()` 方法指定连接条件。例如,假设有两个实体类 `User` 和 `Order`,它们之间通过 `userId` 字段关联,可以使用以下 Criteria API 查询语句:
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Order> query = cb.createQuery(Order.class);
Root<Order> orderRoot = query.from(Order.class);
Join<Order, User> userJoin = orderRoot.join("user");
query.where(cb.equal(userJoin.get("name"), name));
List<Order> resultList = entityManager.createQuery(query).getResultList();
```
这里使用 `join()` 方法连接 `Order` 和 `User` 表,然后使用 `equal()` 方法指定连接条件,最后使用 `where()` 方法添加查询条件。