我的用户表如下
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();
我如何解决这个问题,以便我不会在列表中多次使用同一个用户?
答案 0 :(得分:1)
这是由于内部处理连接的方式。解决方案就是将List转储到Set中以消除重复。
答案 1 :(得分:1)
@ManyToMany(fetch = FetchType.EAGER)
您的UserRole和Euser之间存在多对多的依赖关系,因此您肯定会获得重复的条目,因此您必须在从DB中获取它后在逻辑中对其进行过滤