我在这种情况下遇到了问题(我会尽量让它更容易)——我的数据库中有用户具有角色列表和状态列表。
public class User implements Serializable {
@ManyToMany(cascade = CascadeType.ALL, fetch= FetchType.LAZY)
@JoinTable(name = "role_to_user",
joinColumns={@JoinColumn(name = "user_id")},
inverseJoinColumns={@JoinColumn(name = "role_id")})
private Set<Role> roles = new LinkedHashSet<Role>();
@ManyToMany(cascade = CascadeType.ALL, fetch= FetchType.LAZY)
@JoinTable(name = "status_to_user",
joinColumns={@JoinColumn(name = "user_id")},
inverseJoinColumns={@JoinColumn(name = "status_id")})
private Set<Status> statuses = new LinkedHashSet<Status>();
}
我正在尝试创建一个休眠条件,它能够返回具有指定角色和状态的用户(在加入角色表和状态表之后)。就像是 :
返回角色 = 1 或角色 = 2 且状态 = 1 的用户
我用谷歌搜索了一些东西,现在我可以创建一个查询,它只返回具有指定角色的用户,而不是状态。
Criteria cr = session.createCriteria(User.class)
.createCriteria("roles")
.add(Restrictions.or(Restrictions.eq("roletype", 1), Restrictions.eq("roletype", 2)));
表用户和角色通过具有两列(user_id,role_id)的role_to_user表连接,类似地通过status_to_role表连接表用户和状态
谢谢你的建议 :)