Метод нахождения сущности по совокупности связанных с ней в отношении "Многие-ко-многим" сущностей 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?