我在使用JPQL编写查询时遇到问题。我有两个具有多对多关系的实体:
Entity1(用户)
@Entity
public class User implements Serializable {
@Id
private long id;
private String name;
@ManyToMany()
@JoinTable(name="users_roles",
joinColumns=@JoinColumn(name="user_id"),
inverseJoinColumns=@JoinColumn(name="role_id"))
private Set<Role> roles;
}
实体2(角色)
@Entity
public class Role implements Serializable {
@Id
private long id;
private String name;
}
想象一下,我有一个可以在大小上变化的角色列表(例如“roleA”,“roleB”,“roleC”,...),我想让每个在此列表中拥有所有角色的用户。在我的脑海里,它会是这样的:
select u from users u where :roles member of u.roles
据我所知,这不起作用,因为:在“成员”的左侧使用时,角色不能是一个集合。有没有办法在一个JPQL查询中实现这一点?如果在单个查询中不可能,那么最好的方法是什么?
由于
答案 0 :(得分:0)
试试这个:
select u FROM User u JOIN u.roles r WHERE r IN (:roles)