下午好,我想做正确的数据抽样查询,但显然我有些不懂((
我需要显示那些不在项目团队中的用户,他们的id是给定的。
我的请求部分可行:它过滤用户,但如果用户在另一个项目的另一个命令中,那么条件就不满足了((
@Query("select distinct u from User u " +
"left join u.userTeams uTeams " +
"where u.userTeams is empty or uTeams.teamProject.projectId <> :projectId")
List<User> findAllNotAddedToProject(@Param("projectId") Long project);
截图显示,该用户有两个团队,项目不同,所以我需要找不到这个用户,因为其中一个团队被分配到了项目,而第二个团队没有被分配到(请求通过第二个命令找到它
我的数据库模式。
使用类似下面的方法
@Query("select u from User u where not exists (" +
"select 1 from Team t join t.users sub " +
"where sub.id = u.id empty and t.teamProject.projectId = :projectId)")
List<User> findAllNotAddedToProject(@Param("projectId") Long project);