【发布时间】:2017-02-06 06:45:02
【问题描述】:
我有以下对象:用户和角色
我的数据库中有一个名为 user_role 的链接表,它创建了一个多对多关系,授予任何用户任何角色。在我的 java 对象上,这种关系以这样一种方式映射,即用户有一个名为角色的集合,它是角色类型的列表。
我有一个按角色搜索用户的服务。这很简单。
"select * from User u join u.roles as role where role.id in (:theRoleIWant)"
效果很好。但是现在我想返回一个没有角色的用户列表。
例如,基本级别用户的角色为 6,管理用户的角色为 3。用户可以同时拥有这两个角色,但对于我的查询,我只对没有角色 id 3 的基本级别用户感兴趣。所以我这样做:
"select * from User u join u.roles as role where role.id in (6) and role.id not in (3)"
这将继续返回同时具有这两个角色的用户。我这里有什么遗漏吗?
感谢您的宝贵时间, 玛格丽特
【问题讨论】: