Znajdowanie elementów z zestawem zawierającym wszystkie elementy danego zestawu za pomocą jpql

Chcę znaleźć przedmioty, które zawierająwszystko podane znaczniki w zestawie znaczników.

Oto uproszczone klasy:

@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]
}

Jeśli spróbuję tak to zrobić

select distinct i 
from Item i join i.tags t
where t in (:tags)

Dostaję przedmioty, które zawierająkażdy podanych tagów. Nie jest to zaskakujące, ale chcę rzeczy, które zawierająwszystko podanych tagów. Więc próbuję tego na odwrót:

select distinct i 
from Item i join i.tags t
where (:tags) in t

Dostaję komunikat o błędzieorg.hibernate.exception.SQLGrammarException: arguments of row IN must all be row expressions. Działa, jeślitags zawiera tylko jeden znacznik, ale nie powiedzie się więcej.

Jak mogę to wyrazić w JPQL?

questionAnswers(2)

yourAnswerToTheQuestion