我们有两个具有多对多关系的技术实体和项目实体,它们相互关联 带有附加的参考表。
technologies
id name
1000 | digging
2000 | drilling
projects
id name
10 | London
20 | Madrid
technologies_projects
tech_id project_id
1000 | 10
2000 | 10
1000 | 20
我可以通过这样的查询从数据库检索技术:
@Query("select t from Technology t left join fetch t.projects")
List<Technology> findAll();
带有left join fetch
子句的JPQL查询必须用于检索带有项目集合的技术,以避免延迟初始化异常。
问题是::如何修改查询才能获得某个项目中使用的技术列表? (查询findAllByProject(10)
必须返回技术1000和2000)。
我在这里不能使用本机SQL查询,因为我需要join fetch
来收集项目。
答案 0 :(得分:1)
通过在项目实体上添加where子句。
@Query("select t from Technology t left join fetch t.projects p where p.id=10")
List<Technology> findAllByProject10();