Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有多对多关系的JPQL查询_Java_Sql_Hibernate_Jpa - Fatal编程技术网

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();