JPA-запрос для «Set НЕ содержит определенный элемент» - PullRequest
0 голосов
/ 01 февраля 2019

Допустим, у нас есть класс Person, который содержит Set<Book> books.

Чтобы найти всех людей с книгой "Эффективная Java", вы можете написать:

select p from Person p left outer join fetch p.books as b where b.name='Effective Java'

Теперь, как мне включить этот запрос в голову и найти все Person без этой книги?

select p from Person p "where p.books does not contain book b where b.name='Effective Java'"

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Или как насчет

 select p from Person p join p.books b where b.name <> 'Effective Java'
0 голосов
/ 01 февраля 2019

Вы можете воспользоваться ключевым словом NOT EXISTS:

select p 
from Person p
where not exists (
   select b from p.books b where b.name = 'Effective Java'
)
...