jpa @Query 不查询子表
时间: 2023-10-01 19:05:52 浏览: 124
Jpa 原生SQL分页查询“一个别名引发的一场血案”
在 JPA 中,可以使用 @Query 注解来编写自定义查询语句。如果您不想查询子表,可以使用 JOIN FETCH 或 LEFT JOIN FETCH 来加载关联实体。这样可以确保在查询时同时加载关联实体,而不会导致额外的子查询。
例如,假设您有一个名为 Order 的实体类,它具有与 OrderItem 实体类的一对多关系。如果您想查询 Order 实体并加载其关联的 OrderItem 实体,可以使用以下查询语句:
```
@Query("SELECT o FROM Order o LEFT JOIN FETCH o.orderItems WHERE o.id = :orderId")
Order findOrderWithItems(@Param("orderId") Long orderId);
```
在上面的查询语句中,我们使用 LEFT JOIN FETCH 来加载 Order 实体关联的 OrderItem 实体,同时使用 WHERE 子句来搜索指定的订单。这样可以确保在查询时同时加载关联实体,而不会导致额外的子查询。
阅读全文