Поиск элементов с набором, содержащим все элементы данного набора с помощью jpql
Я хочу найти предметы, которые содержатвсе заданные теги в их наборе тегов.
Вот упрощенные классы:
@Entity
class Item {
@ManyToMany
var tags: java.util.Set[Tag] = new java.util.HashSet[Tag]()
}
@Entity
class Tag {
@ManyToMany(mappedBy="tags")
var items: java.util.Set[Item] = new java.util.HashSet[Item]
}
Если я попробую это так
select distinct i
from Item i join i.tags t
where t in (:tags)
Я получаю предметы, которые содержатлюбой из указанных тегов. Это не удивительно, но я хочу предметы, которые содержатвсе из указанных тегов. Так что я пробую наоборот:
select distinct i
from Item i join i.tags t
where (:tags) in t
Я получаю сообщение об ошибкеorg.hibernate.exception.SQLGrammarException: arguments of row IN must all be row expressions
, Работает еслиtags
содержит только один тег, но он терпит неудачу с чем-то большим.
Как я могу выразить это в JPQL?