根据实体列表查找实体

时间:2011-02-03 23:40:51

标签: java hibernate jpa domain-driven-design

假设我们有群组 - >成员(ManyToMany)

使用一组给定的成员 - 如果为这些成员创建了一个组,最实用的方法是什么? (没有额外或缺席的成员)

这感觉不对,因为Group似乎是由它的状态定义的,但是系统要求我们只有一个Group用于特定的成员组合(包括订单!)

编辑:

我正在寻找一种使用JPA来实现这一目标的方法 - 所以Set.retainAll似乎并不适用。

我所说的是,这将是完美的:

List<Member> members;

... // members gets assigned

TypedQuery<Group> query = entityManager.createQuery("select g from Group g where g.members = ?", Group.class)

query.setParameter(1, members);

Group group = query.getSingleResult();

当然,这不是它的工作原理。考虑最差的实现

List<Group> groups = entityManager.createQuery("select g from Group g", Group.class).getResultList();

for (Group g: groups) {
    if (g.getMembers().equals(members)) {
        return g;
    }
}

这两者之间的某个地方必须是我所缺少的东西。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用两套Set.removeAll()Set.retainAll()

答案 1 :(得分:0)

正如我在评论中所述,使用哈希是我能找到的唯一方法,让我相信无法通过查询集合。