Tôi đang sử dụng dữ liệu Spring JPA và tôi có một PagingAndSortingRepository<Contact, Long>
sử dụng một JPASpecificationExecutor<Contact>
. Tôi chuyển một mẫu Specification
và Pageable
vào phương thức .findAll()
của kho lưu trữ này để nhận được Page<Contact>
.Chuyển đổi loại nội dung Trang dữ liệu Spring JPA
Tuy nhiên, thực thể Contact
của tôi có nhiều trường và ánh xạ bổ sung mà tôi không cần trên giao diện người dùng của mình. Vì vậy, tôi có một số ContactDto
chỉ chứa các trường cần thiết và tôi có phương thức có thể chuyển đổi từ Contact
thành ContactDto
.
private ContactDto convertToContactDto(Contact contact) {
//do the conversion
}
Tôi sẽ sử dụng phương pháp chuyển đổi này để chuyển đổi Page<Contact>
thành Page<ContactDto>
như thế nào?
Tôi có thể lấy nội dung của số Page<Contact>
và thực hiện chuyển đổi như thế này.
final Page<Contact> contactPage = pagingAndSortingContactRepository
.findAll(ContactSpecification.findByFirstNmLike(firstNm), pageable);
final Collection<ContactDto> contactDtos = contactPage.getContent()
.stream()
.map(this::convertToContactDto)
.collect(Collectors.toList());
Nhưng sau đó tôi đang trái với một Collection
thay vì một Page
, và tôi không biết làm thế nào để có được điều đó Collection
vào nội dung của Page
. Có cách nào để làm việc này không? Hoặc có cách nào khác để gọi chuyển đổi trên chính cá thể Page<Contact>
không?
này đã làm các trick. Dễ dàng hơn nhiều so với việc tạo một thể hiện Trang mới và sao chép các đối tượng. –
@Andrew bạn có thể bao gồm một số mẫu mã từ convertToContactDto không? –