java - 使用复合Where子句的JPA查询效率低下

标签 java spring jpa spring-data-jpa

我有一个具有一对多关系的表,如下所示

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."

但是,在观察日志后,我意识到上面的查询正在做奇怪的事情,例如

  1. 生成多个选择而不是一个选择

  2. 日志中可以看到一些交叉连接

我试图了解我是否正确定义了查询,以及复合Where 确实如此强大,为什么我的查询效率如此低下。

最佳答案

您可以使用以下方法:

Set<Children> findAllByTeacherSchoolCity(String city);

假设您的类(class) Children 有字段 Teacher TeacherTeacherSchool school学校字符串城市

如有差异,请在评论中要求澄清。

关于java - 使用复合Where子句的JPA查询效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023007/

相关文章:

java - oracle海量数据复杂报表

java - 线程和 hibernate session 的问题

java - JPA 和 Hibernate 中的 @Id 注解

java - 即使实体具有 @Version 属性,我也可以在 Hibernate 中暂时禁用乐观锁定吗?

java - WLS 10.3.4 - 在范围 xxx_EJB.jar 中没有名为 'xxx' 的持久性单元可用。可用持久化单元 : []

java - 为什么我无法在此代码中使用 setLocation 定位 JButton?

java - 如何删除目录中的所有文件但保留符号链接(symbolic link)指向的文件?

java - 取消单击 ListView 元素

java - 请求的资源在 Spring MVC 中不可用

java - Jhipster:异步 sendemail() 一段时间后停止工作