如何映射页面< ObjectEntity>到Page< ObjectDTO>在spring-data-rest中

问题描述:

当我使用 PagingAndSortingRepository.findAll(可分页)点击数据库时,我得到 Page< ObjectEntity> 。但是,我想将DTO暴露给客户端而不是实体。我可以通过将实体注入到它的构造函数中来创建DTO,但是如何将Page对象中的实体映射到DTO?根据spring文档,Page提供了只读操作。

When I hit the database with PagingAndSortingRepository.findAll(Pageable) I get Page<ObjectEntity>. However, I want to expose DTO's to the client and not entities. I can create DTO just by injecting entity into it's constructor, but how do I map the entities in Page object to DTO's? According to spring documentation, Page provides read-only operations.

此外,Page.map不可能,因为我们不支持java 8.如何创建手动映射对象的新页面?

Also, Page.map is not possibility, as we don't have support for java 8. How to create the new Page with mapped objects manually?

您仍然可以使用 Page.map 没有lambda表达式:

You can still use the Page.map without lambda expressions:

Page<ObjectEntity> entities = objectEntityRepository.findAll(pageable);
Page<ObjectDto> dtoPage = entities.map(new Converter<ObjectEntity, ObjectDto>() {
    @Override
    public ObjectDto convert(ObjectEntity entity) {
        ObjectDto dto = new ObjectDto();
        // Conversion logic

        return dto;
    }
});