首页 > 解决方案 > Spring Data JPA中查询选择内连接多表时如何获取数据

问题描述

这是我的项目。我有问题,我想从学生表中获取数据加入许多表分支、房间和性别使用注释@Query 作为图像 MySql 中的站点查询

这是带有语句 MySql 的查询

这是我想在 Spring Data JPA 中使用 @Query 的代码,目的是在加入多个表时获取数据

在我调用 API 后,它通知错误 这是错误

我需要支持,这是我的项目: https ://github.com/daovantam0410/quan-ly-dao-tao

标签: javaspring-bootspring-data-jpa

解决方案


您在这里有两个选项,您可以使用从数据库中获取学生。

List<Student> students = studentRepository.findAll();

这将通过发出其他查询来加载其他实体(房间、性别和分支),这将导致著名的问题N+1 queries

因此,要一次性加载所有实体,请使用entity graphsfetch join

@Query(value = "SELECT st FROM Student st INNER JOIN FETCH st.branch b INNER JOIN FETCH st.gender g INNER JOIN FETCH st.room r")
List<Student> fetchStudentDataJoinTable();

注意:如果属性 (roomgender)branch可以null在学生中,则使用left join而不是inner join


推荐阅读