Поиск сущности на основе списка сущностей - PullRequest
2 голосов
/ 04 февраля 2011

Предположим, у нас есть Группа -> Участник (ManyToMany)

С данным набором Участника - какой самый практичный способ определить, была ли Группа создана именно для этих участников?(Нет дополнительных или отсутствующих членов)

Это кажется неправильным, потому что кажется, что группа определяется ее состоянием, но система требует, чтобы у нас была только одна группа для определенной комбинации членов (включая порядок!)

Редактировать:

Я ищу способ сделать это с помощью 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 ]

1 голос
/ 04 февраля 2011

Вы можете попробовать Set.removeAll() или Set.retainAll() с двумя наборами.

0 голосов
/ 14 ноября 2012

Использование хеша, как я уже говорил в своем комментарии назад, было единственным подходом, который я нашел, заставив меня поверить, что невозможно запросить коллекцию.

...