Я использую Spring Data JPA, и у меня есть PagingAndSortingRepository<Contact, Long>, который использует JPASpecificationExecutor<Contact>. Я передаю экземпляр Specification и Pageable в метод .findAll() этого репозитория, чтобы получить Page<Contact>.
Однако мой объект Contact имеет много дополнительных полей и сопоставлений, которые мне не нужны на моем лицевом конце. Итак, у меня есть ContactDto, который содержит только необходимые поля, и у меня есть метод, который может конвертировать из Contact в ContactDto.
private ContactDto convertToContactDto(Contact contact) {
//do the conversion
}
Как я могу использовать этот метод преобразования для преобразования Page<Contact> в Page<ContactDto>?
Я могу получить содержимое Page<Contact> и сделать преобразование следующим образом.
final Page<Contact> contactPage = pagingAndSortingContactRepository
.findAll(ContactSpecification.findByFirstNmLike(firstNm), pageable);
final Collection<ContactDto> contactDtos = contactPage.getContent()
.stream()
.map(this::convertToContactDto)
.collect(Collectors.toList());
Но тогда я остался с Collection вместо Page, и я не знаю, как получить этот Collection в содержимое Page. Есть ли способ сделать это? Или есть другой способ вызвать преобразование в самом экземпляре Page<Contact>?