【发布时间】:2021-01-02 01:34:42
【问题描述】:
我有一个具有如下一对多关系的表
城市->学校->老师->孩子
我从城市检索孩子的 JPQL 如下
@Query("Select c from Children c where c.teacher.school.city=:city")
Set<Children> findChildrenFromCity(@Param("city") City city);
reference herereference here 关于 Where 子句 这么说
“复合路径表达式使 where 子句非常强大。”
但是,在观察日志后,我意识到上面的查询正在做一些奇怪的事情,比如
-
生成多个 Select 而不是一个 Select
-
在日志中可以看到一些交叉连接
我试图了解我是否正确定义了我的查询,如果复合 Where 确实如此强大,为什么我的查询效率如此低。
【问题讨论】:
-
实际的 SQL 是什么样子的?请将其添加到您的问题中。
-
您有
Bidirectioanl映射? -
是的,双向映射,一侧有适当的 mappedBy。
-
看这么少的代码很不清楚。多重选择也可能是延迟提取或放置不当的 EAGER 提取的结果。请发布记录的查询(或子集)和实体代码;只需带有映射注释的属性就足够了。
标签: java spring jpa spring-data-jpa