В настоящее время у меня есть HQL-запрос, который возвращает всех Участников, обладающих ЛЮБОЙ Премией из набора указанных Наград:
from Member m left join m.awards as a where a.name in ("Trophy","Ribbon");
Что мне сейчас нужно, так это HQL, который вернет всех Участников, которые обладают ALL Наградами, указанными в наборе Наград.
Итак, предполагая эти данные:
Joe has Trophy, Medal
Sue has Trophy, Ribbon
Tom has Trophy, Ribbon, Medal
Приведенный выше запрос вернет Джо, Сью и Тома, потому что у всех троих есть хотя бы один трофей или лента. Но мне нужно вернуть только Сью и Тома, потому что они единственные, кто обладает всеми указанными наградами (Трофей и Лента).
Вот структура класса (упрощенная):
class Member {
private String name;
private Set<Award> awards;
}
class Award {
private String name;
}