Hibernate возвращает повторяющиеся значения, поскольку в другой таблице есть повторяющиеся значения

Итак, у меня есть таблица пользователей, таблица проектов и таблица ролей пользователя _. У меня есть один пользователь, который подключен к 2 проектам, но когда у меня есть только одна роль для него, он возвращает эти 2 проекта, но если у меня есть 2 роли для него, он возвращает 4 роли (2x2 проекта ). Как предотвратить это

Это мой код для возврата списка проектов для пользователя

@Override
public List<Project> retrieve(User user) {
    Criteria criteria = super.createCriteria();
    criteria.addOrder(Order.desc("date"));
    criteria.createCriteria("users").add(Restrictions.eq("id", user.getId()));

    return (List<Project>) criteria.list();
}

сопоставления в классе User

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Users_Projects",
           joinColumns = @JoinColumn(name = "UserID"), inverseJoinColumns =   @JoinColumn(name = "ProjectID"))
public List<Project> getProjects() {
    return projects;
} 

@ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
@Column(name = "RoleType")
@JoinTable(name = "User_Roles", joinColumns = @JoinColumn(name = "UserID"))
public Set<Role> getRoles() {
    return roles;
}

Любые предложения, в чем проблема здесь?

тнк

5
задан Boris Horvat 3 July 2012 в 21:41
поделиться