首页 > 解决方案 > JPA中的“嵌套”表调用?(将 SQL 转换为 JPA)

问题描述

我正在尝试将此 SQL 转换为 JPA @Query 调用,并且正在努力了解如何在一个 JPA 查询中处理多个表调用,特别是我试图返回分配给程序的所有用户的计数。

DB结构如图所示:

数据库结构是:

我要翻译的查询是:

SELECT *FROM  User WHERE id in ( SELECT user FROM UserProjectAssignment WHERE project in ( SELECT id FROM Project WHERE program = programId))

我目前的查询是:

@Query("SELECT COUNT(u) FROM User u, UserProjectAssignment upa, Project p WHERE u.id = upa.project AND WHERE upa.project = (p.program = :programId)")
Long countUsersAssignedToProgram(@Param("programId") Long programId);

标签: sqlspringhibernatejpa

解决方案


基本上你在这里需要的是查询 JOIN 但只有知道类结构才能形成查询。

您可以像这样更改mysql查询

Select user from User user join UserProjectAssignment upa on user.id = upa.userid join Project p on upa.projectId = p.id join program pgm on p.programId = pgm.id ;


推荐阅读