Utilizzo Spring Data JPA e ho un PagingAndSortingRepository<Contact, Long>
che utilizza uno JPASpecificationExecutor<Contact>
. Trasmetto un'istanza Specification
e una al metodo .findAll()
di questo repository per ottenere uno Page<Contact>
.Conversione del tipo di dati Spring JPA Contenuto della pagina
Tuttavia, la mia entità Contact
ha molti campi e mappature aggiuntivi che non ho bisogno sul mio front-end. Quindi, ho un ContactDto
che contiene solo i campi necessari e ho un metodo che può convertire da Contact
a ContactDto
.
private ContactDto convertToContactDto(Contact contact) {
//do the conversion
}
Come posso fare per utilizzare questo metodo di conversione per convertire il Page<Contact>
ad un Page<ContactDto>
?
Posso ottenere il contenuto di Page<Contact>
ed eseguire la conversione in questo modo.
final Page<Contact> contactPage = pagingAndSortingContactRepository
.findAll(ContactSpecification.findByFirstNmLike(firstNm), pageable);
final Collection<ContactDto> contactDtos = contactPage.getContent()
.stream()
.map(this::convertToContactDto)
.collect(Collectors.toList());
Ma poi mi sono lasciato con un Collection
invece di una Page
, e non so come ottenere che Collection
nel contenuto del Page
. C'è un modo per fare questo? O c'è un altro modo per chiamare la conversione sull'istanza Page<Contact>
stessa?
Questo ha fatto il trucco. È molto più facile che creare una nuova istanza di pagina e copiare gli oggetti. –
@Andrew puoi includere qualche esempio del codice da convertToContactDto per favore? –