Поиск элементов с набором, содержащим все элементы заданного набора, с помощью jpqlJAVA

Программисты JAVA общаются здесь
Anonymous
Поиск элементов с набором, содержащим все элементы заданного набора, с помощью jpql

Сообщение Anonymous »

Я хочу найти элементы, которые содержат все заданные теги в их наборе тегов.

Вот упрощенные классы:

Код: Выделить всё

@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: все аргументы строки IN должны быть выражениями строк. Это работает, если теги содержат только один тег, но не работает с более чем одним тегом.

Как я могу выразить это в JPQL?

Подробнее здесь: https://stackoverflow.com/questions/143 ... -with-jpql

Вернуться в «JAVA»