如何在另一个集合中获取具有集合和此集合的一个元素的实体

时间:2013-06-01 06:52:52

标签: many-to-many hql jointable

现在我正在尝试实现像filter这样的函数。用户和角色有两种模式。我使用了单向多对多关系。以下是我的代码。

    public class User {
        ...
        @ManyToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
        @JoinTable(name = "user_role", joinColumns = {@JoinColumn(name="user_id") }, 
        inverseJoinColumns = { @JoinColumn(name = "role_id") })
        private Set<Role> roles = new HashSet<Role>();
        ...
    }

    public class Role {
        private String role;
        ...
    }

现在,我希望获得具有多个角色但只是角色集合中用户角色之一的用户被挑选出来的用户。我想使用HQL进行查询,但我不知道如何编写一个sql“select * from user as u left join user_role as u on u.id = ur.user_id 其中ur.role_id在(1,2)中。“但结果无法转换为用户列表。我仍然需要使用HQL,所以任何人都可以提供一些帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您的SQL查询的翻译是

select u from User u join u.roles role 
where role.id in (1,2)

请参阅the documentation以了解HQL和加入。