Java 具有多对多关系的JPQL查询
我们有两个实体技术和项目,它们之间存在多对多关系,相互关联 有一个额外的参考表Java 具有多对多关系的JPQL查询,java,sql,hibernate,jpa,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 我可以通过这样的查询从db检索技术:
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
我可以通过这样的查询从db检索技术:
@Query("select t from Technology t left join fetch t.projects")
List<Technology> findAll();
@Query(“从技术中选择t左连接获取t.projects”)
列出findAll();
必须使用带有left join fetch
子句的JPQL查询来检索项目集合中的技术,以避免延迟初始化异常
问题是:查询必须如何修改才能获得特定项目中使用的技术列表?(查询findAllByProject(10)
必须返回technologies 1000和2000)
我不能在这里使用本机SQL查询,因为我需要
连接fetch
来获取项目集合。通过在项目实体上添加where子句
@Query(“从技术中选择t左连接获取t.p,其中p.id=10”)
列出findAllByProject10();