使用fetch创建查询

时间:2015-02-04 17:17:44

标签: sql jpa spring-data

我有这个问题:

@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

的地方

我需要的是:  如果来自路径的任何地点城市之类的参数,请使用获取该路线中的所有地点获取该路线;

2 个答案:

答案 0 :(得分:1)

尝试使用left join fetch

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

答案 1 :(得分:1)

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

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

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