每个用户都将需要不同的根,因为每个根都与其他用户不同(未经测试):
final CriteriaBuilder builder = m_entityManager.getCriteriaBuilder();CriteriaQuery<Group> criteria = builder.createQuery(Group.class);final List<Predicate> predicates = new ArrayList<Predicate>();final Root<Group> group = criteria.from(Group.class);for (final User user : users){ final Root<GroupMember> memberRoot = group.join(Group_.members); final Predicate p = builder.equal(memberRoot.get(GroupMember_.user), user); predicates.add(p);} // forpredicates.add(builder.equals(builder.count(group.get(Group_.members)),users.size()))criteria.where(builder.and(predicates.toArray(new Predicate[predicates.size()])));final TypedQuery<Group> results = m_entityManager.createQuery(criteria);


