sql - 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);
解决方案
基本上你在这里需要的是查询 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 ;
推荐阅读
- c++ - 简化模板类的静态常量成员定义
- php - 刷新页面时wp_mail怎么发邮件
- python - 用于在 AWS 上编写无服务器 Web 服务的 python 3.x SOAP 库
- string - 在字符串中插入单元格中的值
- javascript - 使用材料表库时如何更改删除过滤器图标?
- c# - 所有用户 C# 的 Botframework v4 相同状态
- node.js - Typescript 不喜欢我的变量名“⛄”,我无法抑制错误
- node.js - 是否有用于 javascript 的 Azure API 来获取资源所有者的电子邮件和姓名?
- java - 如何在不实例化的情况下从 Object 填充项目列表
- javascript - 如何在 .vue 项目中显示当前年份