首页 > 解决方案 > “集合不包含某个项目”的 JPA 查询

问题描述

假设我们有一个Person包含Set<Book> books.

要找到所有拥有“Effective 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'"

标签: javajpaspring-data-jpaspring-datajpql

解决方案


您可以利用以下NOT EXISTS关键字:

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

推荐阅读