Я использую 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>
?