使用聚合DTO

时间:2018-06-01 02:14:36

标签: spring-data-jpa spring-data-rest

我的摘要DTO投掷PersistentEntity不能为空!我正在使用摘要DTO来返回sum()和count()聚合。我将自定义查询添加到源存储库接口。

public interface SettlementHistoryRepository extends JpaRepository<SettlementHistory, String> {

  @Query("SELECT new com.x.service.report.dto.CategoryAmountSummary(h.organizationName, count(h.id), sum(h.rebateAmount)) FROM SettlementHistory h WHERE h.fundDate BETWEEN :rangeStart AND :rangeEnd GROUP BY h.organizationName ORDER BY h.organizationName")
  List<CategoryAmountSummary> summarizeRebateAmountByOrganizationWhereFundDateIsBetweenOrderByFundDate(
        @Param("rangeStart") @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm'Z'") Date rangeStart,
        @Param("rangeEnd") @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm'Z'") Date rangeEnd
  );

该方法导致此错误:

  ERROR --- [nio-8080-exec-7] o.s.d.r.w.RepositoryRestExceptionHandler : PersistentEntity must not be null!

如果不是因为我需要对每个类别进行计数,我会返回实体类。我还能怎么做呢?

1 个答案:

答案 0 :(得分:0)

最后,Spring Data Rest不喜欢存储库返回不同的对象类型。为了解决这个问题,我添加了一个Rest Controller,它又调用了存储库中的聚合方法。它能够毫无问题地返回摘要DTO。