Hibernate gibt doppelte, da eine andere Tabelle doppelte Werte

Also ich habe eine Tabelle Benutzer Tabelle Projekte und User_Roles Tabelle. Ich habe einen Benutzer, die verbunden ist, um 2 Projekte, aber wenn ich nur eine Rolle für ihn gibt es diese 2 Projekte, aber wenn ich 2 Rollen für ihn gibt es 4 Rollen (2x2-Projekte). Wie kann ich verhindern, dass diese

Dies ist mein code für die Rückgabe der Liste der Projekte für die Nutzer

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

Zuordnungen in der User-Klasse

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

Irgendwelche Vorschläge, was ist hier das problem?

tnx

InformationsquelleAutor Boris Horvat | 2012-07-03
Schreibe einen Kommentar