Quindi ho una tabella utenti, tabella progetti e tabella User_Roles. Ho un utente connesso a 2 progetti, ma quando ho un solo ruolo per lui restituisce quei 2 progetti, ma se ho 2 ruoli per lui restituisce 4 ruoli (progetti 2x2). Come posso evitare questoHibernate restituisce duplicato perché un'altra tabella ha valori duplicati
Questo è il mio codice per la restituzione l'elenco dei progetti per l'utente
@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();
}
mappature in classe 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;
}
Qualche suggerimento qual è il problema?
TNX
grazie! ha funzionato come un incantesimo, puoi comunque spiegare perché il caricamento dei ruoli potrebbe portare a questo. Sono anche sicuro che sia così, ma non seguo il motivo per cui l'impostazione di qualcosa che non fa parte della connessione dei progetti utente lo fa. qualche idea? –
Vedere il mio aggiornamento per un po 'di più sulla domanda nel tuo commento. –