Найти объекты, коллекция которых содержит набор значений

150
15 апреля 2022, 10:00

Допустим есть какая-то книга

public class Book {
   private Set<Tag> tags;
}

И теги

public class Tag{
   private String name;
}

Между ними связь many-to-many через 3 таблицу (book_tag). Нужно найти книги, которые содержать заданные теги. То есть допустим Книга1(Тег1), Книга2(Тег1, Тег2, Тег3), Книга3(Тег1, Тег2, Тег4), Книга4(Тег2) и я хочу получить книги содержащие Тег1 и Тег2. То есть ожидаю получить Книгу2 и Книгу 3.

Как можно получить это на SQL & HQL & Criteria?

Спасибо!

Answer 1

На SQL это

SELECT books.book_id, books.book_title
FROM books
JOIN books_tags USING (book_id)
JOIN tags USING (tag_id)
WHERE tags.name in ('tag-1', 'tag-2')
GROUP BY books.book_id, books.book_title
HAVING COUNT(DISTINCT tag_id) = 2
READ ALSO
Создание aws role ,s3 buckets и lambda function кодом на джаве

Создание aws role ,s3 buckets и lambda function кодом на джаве

Я новичок в AWS у меня есть программа, которая делает некие операции над видео (конвертирует один формат в другой (есть два бакита в первый загружается...

262
как правильно использовать метод instanceof

как правильно использовать метод instanceof

Дана задача: Создать статический метод printMagazines(Printable[] printable) в классе Magazine, который выводит на консоль названия только журналовСоздать статический...

257
Java задача на использование Swing

Java задача на использование Swing

Необходимо написать программу, в которой при нажатии мышки создаётся квадратик синего цвета, при двойном нажатии на синий квадратик цвет...

200
Как исправить ошибку парсинга

Как исправить ошибку парсинга

написал код пытаюсь парсить firebase realtime NotificationFragmentjava

135