我有一个具有一对多关系的表,如下所示
City->School->Teacher->Children
我从城市检索 child 的 JPQL 如下
@Query("Select c from Children c where c.teacher.school.city=:city")
Set<Children> findChildrenFromCity(@Param("city") City city);
这个reference here关于 Where 子句 表示
"Compound path expressions make the where clause extremely powerful."
但是,在观察日志后,我意识到上面的查询正在做奇怪的事情,例如
生成多个选择而不是一个选择
日志中可以看到一些交叉连接
我试图了解我是否正确定义了查询,以及复合Where 确实如此强大,为什么我的查询效率如此低下。
最佳答案
您可以使用以下方法:
Set<Children> findAllByTeacherSchoolCity(String city);
假设您的类(class) Children
有字段 Teacher Teacher
,Teacher
有 School school
和 学校
有字符串城市
。
如有差异,请在评论中要求澄清。
关于java - 使用复合Where子句的JPA查询效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023007/