当用户有多个角色时,Hibernate获取值两次

时间:2014-02-02 10:37:29

标签: java hibernate

我的用户表如下

public class EUser {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(nullable = false, unique = true)
    private String userName;


    @Column(nullable = false)
    private String password;


    @ManyToMany(fetch = FetchType.EAGER)
    private List<UserRole> roles;
    @OneToOne
    private EUser approvedBy;
}

现在我想从EUser表中获取所有用户。我收到的用户不止一次有多个UserRole

获取列表我正在使用以下方法

private SessionFactory session;
session.getCurrentSession().createQuery("from EUser").list();

我如何解决这个问题,以便我不会在列表中多次使用同一个用户?

2 个答案:

答案 0 :(得分:1)

这是由于内部处理连接的方式。解决方案就是将List转储到Set中以消除重复。

答案 1 :(得分:1)

@ManyToMany(fetch = FetchType.EAGER)  

您的UserRole和Euser之间存在多对多的依赖关系,因此您肯定会获得重复的条目,因此您必须在从DB中获取它后在逻辑中对其进行过滤