如何在Spring Boot中从PagingAndSortingRepository返回自定义类

时间:2019-05-28 14:40:01

标签: 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(targetEntity = Product.class)
  private Product product;
}

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

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

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

  • saleId
  • customerId
  • customerName
  • productId
  • 产品名称
  • 产品价格

但是我不确定如何实际执行此操作。

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

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

return saleList;

1 个答案:

答案 0 :(得分:2)

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

Page<YourDTO> findAllAsDtos(Pageable pageable);

在此处详细了解预测:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections