したがって、Users テーブル、Projects テーブル、および User_Roles テーブルがあります。2 つのプロジェクトに接続されているユーザーが 1 人いますが、ロールが 1 つしかない場合は 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;
}
ここで何が問題なのですか?
tnx