Vì vậy, tôi có bảng Người dùng, bảng Dự án và bảng Người dùng. Tôi có một người dùng được kết nối với 2 dự án, nhưng khi tôi chỉ có một vai trò cho anh ta thì nó trả về 2 dự án đó, nhưng nếu tôi có 2 vai trò cho anh ta thì nó trả về 4 vai trò (2x2 dự án). Làm thế nào để ngăn chặn điều nàyHibernate trả về trùng lặp vì một bảng khác có giá trị trùng lặp
này được mã của tôi trả lại danh mục dự án cho người dùng
@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();
}
ánh xạ trong lớp tài
@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;
}
Mọi góp ý các vấn đề ở đây là gì?
tnx
cảm ơn bạn! làm việc như một say mê, tuy nhiên bạn có thể giải thích lý do tại sao việc tải các vai trò dẫn đến điều này. Tôi cũng chắc chắn rằng đây là trường hợp, nhưng tôi chỉ không làm theo lý do tại sao sẽ thiết lập một cái gì đó mà không phải là một phần của kết nối của người sử dụng các dự án gây ra điều này. Có suy nghĩ gì không? –
Xem cập nhật của tôi để biết thêm một chút về câu hỏi trong nhận xét của bạn. –