所以我有一个用户表、项目表和用户角色表。我有一个用户连接到 2 个项目,但是当我只有一个角色给他时,它会返回这 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();
}
用户类中的映射
@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