После некоторых исследований я нашел много материалов о том, как написать простой и эффективный код (с использованием JPQL), который:
- Позволяет быстро получать связанные объекты (например, с помощью JOIN FETCH).
- Разрешает разбиение на страницы на одном объекте.
Но когда дело доходит до их объединения - становится неясно, как сделать это эффективным и чистым способом.
Либо это нетерпеливое извлечение, которое работает, но нумерация страниц применяется в памяти (иначе HHH000104: firstResult / maxResults, заданный при извлечении коллекции; применение в памяти! )
Либо это работает разбиение на страницы, но активная выборка не работает (даже если resultSet
действительно содержал связанные сущности), что приводит к дополнительным запросам к базе данных для извлечения связанных сущностей для каждой строки впартия.
Самое близкое, что на самом деле работает, это https://vladmihalcea.com/fix-hibernate-hhh000104-entity-fetch-pagination-warning-message/
Но меня удивило, есть ли более интуитивно понятный и чистыйРешение проблемы?
Вопрос : Существуют ли другие рекомендации по использованию нумерации страниц при активном извлечении связанных объектов?
Примечание Решение также должно предоставлять способ применения фильтров к данным, извлекаемым из базы данных.(например, JPQL WHERE предложение )