spring-data-jpa - 带有聚合 DTO 的 Spring JPA“PersistentEntity 不能为空”
问题描述
我的摘要 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!
如果不是因为我需要对每个类别进行计数,我会返回实体类。我还能怎么做呢?
解决方案
最后,Spring Data Rest 不喜欢存储库返回不同的对象类型。为了解决这个问题,我添加了一个 Rest Controller,它依次调用存储库上的聚合方法。它能够毫无问题地返回摘要 DTO。
推荐阅读
- javascript - TypeError:无法在 App React 路由器上读取未定义的属性“参数”
- certificate - 将 signingCertificateV2 属性添加到 SignedCms
- postgresql - 如何在 Postgres 中正确索引和查询时间序列数据?
- javascript - 缺少从sails.js 文件上传返回的数据
- c++ - 我怎样才能找到素数反转数?
- amazon-web-services - AWS Redshift Distkey 和 Skew
- c++ - 将 QML 项目集成到 C++ 代码中的问题
- swift - 如何在 SearchController 中搜索 hashTag?
- dataframe - 火花数据框澄清选择
- javascript - 遍历对象数组并根据数组中出现的次数选择对象