Java Hibernate标准-多个表之间的连接
我在这种情况下遇到了一个问题,我会尽量让它变得更简单-我的数据库中有用户,他们有角色列表和状态列表Java Hibernate标准-多个表之间的连接,java,hibernate,join,Java,Hibernate,Join,我在这种情况下遇到了一个问题,我会尽量让它变得更简单-我的数据库中有用户,他们有角色列表和状态列表 public class User implements Serializable { @ManyToMany(cascade = CascadeType.ALL, fetch= FetchType.LAZY) @JoinTable(name = "role_to_user", joinColumns={@JoinColumn(name = "
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>();
}
Criteria cr = session.createCriteria(User.class)
.createCriteria("roles")
.add(Restrictions.or(Restrictions.eq("roletype", 1), Restrictions.eq("roletype", 2)));
表用户和角色通过具有两列user\u id、role\u id的role\u-user表连接,类似地,表用户和状态通过status\u-to\u-role表连接
谢谢你的建议:非常感谢!工作完美无瑕。谢谢节省我的时间!:谢谢!工作完美无瑕。谢谢节省我的时间!:
Criteria cr = session.createCriteria(User.class, "user")
.createAlias("user.roles", "role", Criteria.INNER_JOIN)
.createAlias("user.statuses", "status", Criteria.LEFT_JOIN);
cr.add(Restrictions.or(
Restrictions.eq("role.roletype", 1),
Restrictions.and(
Restrictions.eq("role.roletype", 2),
Restrictions.eq("status.statusType", 1))));