Encontrar elementos con un conjunto que contenga todos los elementos de un conjunto dado con jpql
Quiero encontrar los artículos que contienentodos Las etiquetas dadas en su conjunto de etiquetas.
Aquí están las clases simplificadas:
@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]
}
Si lo intento asi
select distinct i
from Item i join i.tags t
where t in (:tags)
Obtengo los artículos que contienenalguna de las etiquetas dadas. Eso no es sorprendente, pero quiero artículos que contengan.todos de las etiquetas dadas. Así que lo intento al revés:
select distinct i
from Item i join i.tags t
where (:tags) in t
Me sale el mensaje de errororg.hibernate.exception.SQLGrammarException: arguments of row IN must all be row expressions
. Funciona sitags
contiene una sola etiqueta, pero falla con más que eso.
¿Cómo puedo expresar esto en JPQL?