Я использую Spring Security с ACL для защиты документов в своем приложении. С другой стороны, я использую Hibernate Search (поверх lucene) для поиска документов. Этот поиск также поддерживает подкачку. (документы только метаданные документов, хранящихся в базе данных.)Как совместить Hibernate Search (Lucene) с пейджингом и ACL
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Document.class).get();
Query query = queryBuilder.keyword().onFields(fieldNames.toArray(new String[0])).matching(searchQuery)
.createQuery();
FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(query, Document.class);
fullTextQuery.setFirstResult(pageable.getFirstItem());
fullTextQuery.setMaxResults(pageable.getPageSize());
Теперь я должен объединить пейджинг с ACL. Единственная идея, которую я имею на данный момент, заключается в том, чтобы удалить пейджинговую форму FullTextQuery, прочитать все документы с результатами поиска, отфильтровать их там ACL, а затем выполнить подкачку вручную. Но мне не нравится это решение, потому что он загружает все документы, а не только одну страницу.
У кого-нибудь есть идея?