Spring boot 如何在Spring Boot中从分页和排序存储库返回自定义类

Spring boot 如何在Spring Boot中从分页和排序存储库返回自定义类,spring-boot,spring-data-jpa,spring-data,Spring Boot,Spring Data Jpa,Spring Data,我有一个这样的模型: @Entity @Data @AllArgsConstructor @NoArgsConstructor public class Sale { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToOne(targetEntity = User.class) private User customer; @OneToOne(targetEnt

我有一个这样的模型:

@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> {}
public interface SaleRepository扩展了分页和排序存储库{}
但是我希望使用存储库的“findAll”方法来返回一个带有特定字段的自定义类(而不是嵌套实体的所有数据),同时仍然保持分页和排序功能。我要返回的对象列表将包含以下内容:

  • 萨利德
  • 客户ID
  • 客户名称
  • 产品ID
  • 产品名称
  • 产品价格
但我不知道该怎么做。

我的控制器方法接受排序和分页参数,然后执行以下操作:

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

return saleList;
Page saleList=saleRepository.findAll(可分页);
退货清单;

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

Page<YourDTO> findAllAsDtos(Pageable pageable);
Page findAllAsDtos(可分页);

阅读更多关于投影的信息:

谢谢Simon。我以前从未见过这种方法,它似乎是最简单、最直接的方法。干杯也许你应该阅读SpringDataJPA的全部参考文档,因为还有更多隐藏的宝石。