我正在使用 JPA 2.0、Hibernate 4.1.0.Final 和 Spring 3.1.1.RELEASE。我有这个领域的实体......
@Entity
@Table(name = "user")
public class User
{
…
@ManyToMany
@JoinTable(name = "user_role", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
@LazyCollection(LazyCollectionOption.FALSE)
private Set<Role> roles = new HashSet<Role>();
我想写一个方法
List<User> findUsers(List<Role> roles);
这将返回用户至少具有参数“roles”中的一个角色的用户。我如何在 JPA 中做到这一点?我知道我会写
final CriteriaBuilder builder = m_entityManager.getCriteriaBuilder();
final CriteriaQuery<User> criteria = builder.createQuery(User.class);
final Root<User> user = criteria.from(User.class);
…
criteria.where(user.get("role").in(roles)));
final TypedQuery<User> query = m_entityManager.createQuery(criteria);
如果用户只有一个角色,但在这种情况下用户有一个集合,所以我不知道如何调整上述内容。