Java 如何在Spring中使用hibernate标准按角色获取用户

Java 如何在Spring中使用hibernate标准按角色获取用户,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我在我的项目中使用Spring和Hibernate。我希望使用Hibernate标准按特定角色获取用户。我的用户模型使用@manytomy注释与角色模型连接: @ManyToMany(fetch = FetchType.EAGER) @Fetch(FetchMode.SELECT) @JoinTable( name = "user_role", joinColumns = {@JoinColumn(name = "user_id")}, inver

我在我的项目中使用Spring和Hibernate。我希望使用Hibernate标准按特定角色获取用户。我的用户模型使用
@manytomy
注释与角色模型连接:

@ManyToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
@JoinTable(
        name = "user_role",
        joinColumns = {@JoinColumn(name = "user_id")},
        inverseJoinColumns = @JoinColumn(name = "role_id")
)
public Set<Role> getRoles() {
    return roles;
}

执行此条件时,我收到DataIntegrityViolationException。我是否遗漏了什么,或者是否有任何正确的方法可以根据用户的角色来获取用户?

我终于按照评论和回答中的触发点找到了答案


此解决方案并不能完全解决问题,因为它打算通过一个角色仅获取用户。

尝试检查并了解更多关于多对多查询的想法。您能告诉我我的条件有什么问题吗?通常,您使用了多对多,这很难用于查询。我试着解释了很多次。如果您将使用多对一,您的搜索将变得更加简单,您可以使用以下简单方法:
public List<User> getUsersByRole(List<Role> roles) {
    List users = getSession().createCriteria(User.class)
            .add(Restrictions.in("roles", roles)).list();
    return users;
}