如何在Spring中使用hibernate标准来获取用户的角色

时间:2014-12-10 04:57:22

标签: java spring hibernate spring-mvc

我在项目中使用Spring with Hibernate。我希望使用Hibernate标准让用户获得特定角色。我的用户模型使用@ManyToMany注释与角色模型连接:

@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;
}

这是我UserDaoHibernate中的标准:

public List<User> getUsersByRole(List<Role> roles) {
    List users = getSession().createCriteria(User.class)
            .add(Restrictions.in("roles", roles)).list();
    return users;
}

执行此条件时,我收到DataIntegrityViolationException。我错过了什么,或者是否有任何正确的方式让用户获得他们的角色?

1 个答案:

答案 0 :(得分:0)

我最终通过跟踪评论中的触发器和此答案here

来弄明白了

此解决方案并不能完全解决问题,因为它打算只为一个角色的用户提供服务。