有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    这是由于内部处理联接的方式。一个解决方案就是将列表转储到一个集合中,以消除重复项

  2. # 2 楼答案

    @ManyToMany(fetch = FetchType.EAGER)  
    

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