0

现在我正在尝试实现过滤器之类的功能。有两个模型用户和角色。我使用单向多对多关系。下面是我的代码。

    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 ur on u.id = ur.user_id where ur.role_id in (1,2)” . 但结果无法转换为用户列表。而且我仍然需要使用HQL,所以任何人都可以提供一些帮助。谢谢。

4

1 回答 1

0

您的 SQL 查询的翻译是

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

请参阅文档以了解 HQL 和联接。

于 2013-06-01T07:09:29.180 回答