过滤请求JPQL(查找列表中不包含特定id的元素的条目)

问题描述 投票:0回答:1

下午好,我想做正确的数据抽样查询,但显然我有些不懂((

我需要显示那些不在项目团队中的用户,他们的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);

截图显示,该用户有两个团队,项目不同,所以我需要找不到这个用户,因为其中一个团队被分配到了项目,而第二个团队没有被分配到(请求通过第二个命令找到它

enter image description here

我的数据库模式。

enter image description here

java sql spring hibernate jpql
1个回答
0
投票

使用类似下面的方法

@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);
© www.soinside.com 2019 - 2024. All rights reserved.