使用 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
我有这个查询:
@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