具有多对多关系的JPQL查询

时间:2020-05-17 04:04:27

标签: java sql hibernate jpa

我们有两个具有多对多关系的技术实体和项目实体,它们相互关联 带有附加的参考表。

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来收集项目。

1 个答案:

答案 0 :(得分:1)

通过在项目实体上添加where子句。

@Query("select t from Technology t left join fetch t.projects p where p.id=10")
List<Technology> findAllByProject10();