【问题标题】:How to return custom class from PagingAndSortingRepository in Spring Boot如何在 Spring Boot 中从 PagingAndSortingRepository 返回自定义类
【发布时间】:2019-05-28 14:40:00
【问题描述】:

我有一个看起来像这样的模型:

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sale {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @OneToOne(targetEntity = User.class)
  private User customer;

  @OneToOne(targetEntity = Product.class)
  private Product product;
}

我有一个分页和排序存储库,如下所示:

public interface SaleRepository extends PagingAndSortingRepository<Sale, Long> {}

但我想使用存储库的“findAll”方法来返回具有某些字段的自定义类(而不是嵌套实体的所有数据),同时仍保持分页和排序能力。我想返回的对象列表将包含以下内容:

  • saleId
  • 客户 ID
  • 客户姓名
  • 产品标识
  • 产品名称
  • 产品价格

但我不知道该怎么做。

我的控制器方法接受排序和分页参数,然后这样做:

Page<Sale> saleList = saleRepository.findAll(pageable);

return saleList;

【问题讨论】:

    标签: spring-boot spring-data-jpa spring-data


    【解决方案1】:

    您可以创建接口或 DTO,并将其用作存储库中声明的查找结果:

    Page<YourDTO> findAllAsDtos(Pageable pageable);
    

    在此处阅读有关预测的更多信息:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections

    【讨论】:

    • 谢谢西蒙。我以前没有见过这种方法,这似乎是最简单、最直接的方法。干杯!
    • 也许你应该阅读 Spring Data JPA 的整个参考文档 还有更多隐藏的宝石。
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 2017-08-07
    • 2018-10-16
    • 2020-11-25
    • 2017-01-08
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多