当前位置: 首页 > 面试题库 >

转换Spring Data JPA页面内容的类型

胥智
2023-03-14
问题内容

我正在使用Spring Data JPA,并且有一个PagingAndSortingRepository<Contact, Long>使用JPASpecificationExecutor<Contact>。我将SpecificationPageable实例传递给.findAll()此存储库的方法以获取Page<Contact>

但是,我的Contact实体在前端不需要很多额外的字段和映射。所以,我有一个ContactDto只包含必要的字段,我也可以从一个转换方法ContactContactDto

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>实例本身上调用转换?


问题答案:

事实证明,它Page具有自己的.map()方法,您可以向其传递方法引用以进行转换。

这就是我最终进行转换的方式。

final Page<ContactDto> contactDtoPage = contactPage.map(this::convertToContactDto);

convertToContactDto方法只是创建并返回我要转换为的类的实例:

private ContactDto convertToContactDto(final Contact contact) {
    final ContactDto contactDto = new ContactDto();
    //get values from contact entity and set them in contactDto
    //e.g. contactDto.setContactId(contact.getContactId());
    return contactDto;
}


 类似资料:
  • 要允许您传播关于已生成消息的内容类型的信息,默认情况下,Spring Cloud Stream附加contentType标头到出站消息。对于不直接支持头文件的中间件,Spring Cloud Stream提供了自己的自动将邮件包裹在自己的信封中的机制。对于支持头文件的中间件,Spring Cloud Stream应用程序可以从非Spring Cloud Stream应用程序接收具有给定内容类型的消

  • 问题内容: 我有一个带有对话框窗口的页面,该页面将ajax发布数据发送到服务器并接收响应。在开发过程中,可能有两种响应- 一种常规(这不是问题)或一种有错误。服务器返回代码500和包含大量调试信息的页面。这是从框架返回的常规页面,其中包含一些javascript代码。我希望能够显示此错误页面,以防万一。 问题是,我不能简单地将返回的结果附加到body元素或在新页面中打开新链接并再次加载此错误。我只

  • 我想生产一个PDF的网页在景观。虽然可以使用以下方法将页面大小设置为横向: 这并没有达到我想要的,因为我添加的任何内容仍然是面向左->右的,而我希望它是底部->顶部的。 即。这就是我得到的: 我已经能够实现所需的输出打开PDF后,它已经创建并使用iText旋转它,但我想要一个解决方案,让我旋转后立即与iText添加内容。

  • 本文向大家介绍AngularJS转换响应内容,包括了AngularJS转换响应内容的使用技巧和注意事项,需要的朋友参考一下 从远程API获取到的响应内容,通常是json格式的,有时候需要对获取到的内容进行转换,比如去除某些不需要的字段,给字段取别名,等等。 本篇就来体验在AngualrJS中如何实现。 在主页面,还是从controller中拿数据。 以上,userName, url字段是从源数据中

  • 我使用的是Spring数据JPA。 我的控制器如下所示 现在我决定发送一个PageDTO对象来代替Page对象,以限制发送内容。有什么办法可以用java 8把页面转换成页面? 我看到Page是从派生而来的,所以我想我可以做一些类似的事情,但不知道如何将它与PageDTO和UserDTO结合起来。 有没有有效的java 8方法来做到这一点。 我想出了这个解决方案 我想知道是否有另一种有效的方法来做到

  • 问题内容: 我有一个具有典型结构的HTML页面: 您认为有可能吗?我已经尝试给html标记添加一个ID,并且没有成功。 不要问我为什么,但这就是我所需要的(我正在与一个特殊的“ mashup builder”站点合作……这是一个很长的故事)。 编辑 :我忘了说 接收内容 中的 脚本必须执行 ,甚至包括使用在内的外部脚本。 问题答案: 使用 jQuery 尝试一下: 在docs.jquery.com