我正在使用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>
实例本身上调用转换方法?