Метод нахождения сущности по совокупности связанных с ней в отношении "Многие-ко-многим" сущностей Spring Data JPA

Есть две сущности, связанные отношением "Многие-ко-многим". Для примера скажем, что это авторы и книги:

Автор Книга
38 52
41 52
66 52
38 101
41 101
66 101
38 522
66 387

Предоставляет ли Spring Data JPA такой шаблонный запрос (типа findBy...), который позволит найти все книги, связанные с заданным списком авторов в совокупности?

То есть, в приведённом выше примере я хочу найти все книги, связанные с набором авторов [38, 41, 66], при этом меня не интересуют книги, написанные авторами по отдельности или в каком-нибудь другом их сочетании, кроме заданной тройки.

Условно говоря, продолжая пример, запрос вида

Set<Book> findAllByAllAuthorsId(Set<Integer> authorsId)

при подаче на вход списка авторов

Authors [38, 41, 66]

должен вернуть список из двух книг:

Books [52, 101]

Я знаю о том, что Spring Data JPA умеет распознавать подстроку In в названии метода, но для моей задачи это не подходит. Если в метод

Set<Book> findAllByAuthorsIdIn(Set<Integer> authorsId)

подать тот же список авторов, то будут найдены в том числе и книги с идентификаторами 522 и 387.

Как можно решить эту задачу средствами Spring Data JPA?


Ответы (0 шт):