使用 fetch 创建查询

create query with fetch

我有这个查询:

@Query("SELECT p FROM Route p JOIN FETCH p.places pl WHERE pl.city = (:city)")
public List<Route> findByPlaces_City(@Param("city")City city);

它只获取 places.coty = city

的地方

而我需要的是: 如果来自 route 的任何 place 具有 city 之类的参数,则使用 fetched 该路线的所有地点;

试试 left join fetch

@Query("SELECT p FROM Route p LEFT JOIN FETCH p.places pl WHERE pl.city = (:city)")

JPA 不允许这样的查询,因为您不能对获取的连接应用限制。

但是您可以简单地使用内部联接来应用您的限制,并使用另一个获取联接来加载城市:

select distinct r from Route r 
inner join r.places p
left join fetch r.places
where p.city = :city