Tengo una tabla de Usuarios, tabla de proyectos y la de User_Roles. Tengo un usuario que está conectado a 2 proyectos, pero cuando tengo solo un rol para él, devuelve esos 2 proyectos, pero si tengo 2 roles para él, devuelve 4 roles (proyectos 2x2). ¿Cómo evito que esteHibernate devuelve el duplicado porque otra tabla tiene valores duplicados
Este es mi código para devolver la lista de proyectos para el usuario
@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();
}
asignaciones de clase Usuario
@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;
}
Cualquier sugerencia cuál es el problema aquí?
TNX
gracias! funcionó como un amuleto, ¿puedes explicar por qué la carga de los roles te llevaría a esto? También estoy seguro de que este es el caso, pero simplemente no entiendo por qué el hecho de establecer algo que no forma parte de la conexión de los usuarios-proyectos causa esto. ¿Alguna idea? –
Consulte mi actualización para saber más sobre la pregunta en su comentario. –