Поиск элементов с набором, содержащим все элементы заданного набора, с помощью 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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