【发布时间】:2018-06-01 02:14:35
【问题描述】:
我的摘要 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!
如果不是因为我需要对每个类别进行计数,我会返回实体类。我还能怎么做呢?
【问题讨论】:
-
其他存储库方法工作正常我猜?您在 Github 或类似网站上有完整的示例吗?
-
@JensSchauder,是的,存储库使用标准 JPA 查询返回 SettlementHistory 实体。这只是我试图用自定义查询返回非实体 DTO 的事实。 JPA(或 Data Rest?)不知道如何处理 DTO 类型。今天我将尝试将其切换到本机 SQL 以查看是否有帮助。如果没有,周末我可以在 GitHub 上构建一个示例。我希望这是一个足够常见的用例,解决方案将是常识。
-
你能发布完整的堆栈跟踪吗?我认为至少 Spring Data JPA 方面应该工作。不确定弹簧数据是否作为进一步的要求。
-
@JensSchauder - 这是堆栈跟踪。 [ 2018-06-02 17:24:05.090 错误 [report-service,5b4a1f1145b4f96c,3f4f7fd2f948ba94,true] 22 --- [nio-8080-exec-6] o.s.d.r.w.RepositoryRestExceptionHandler:PersistentEntity 不能为空! [ java.lang.IllegalArgumentException: PersistentEntity 不能为空! [在 org.springframework.util.Assert.notNull(Assert.java:134) ~[spring-core-4.3.14.RELEASE.jar!/:4.3.14.RELEASE] [在 org.springframework.data.rest。 webmvc.PersistentEntityResource$Builder.
(PersistentEntityResource.java:140) ~[spring-data-rest-webmvc-2.6.10.RELEASE.jar!/:na] [在 -
[在 org.springframework.data.rest.webmvc.PersistentEntityResource$Builder.
(PersistentEntityResource.java:123) ~[spring-data-rest-webmvc-2.6.10.RELEASE。 jar!/:na] [在 org.springframework.data.rest.webmvc.PersistentEntityResource.build(PersistentEntityResource.java:115) ~[spring-data-rest-webmvc-2.6.10.RELEASE.jar!/:na] [在 org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.wrap(PersistentEntityResourceAssembler.java:74) ~[spring-data-rest-webmvc-2.6.10.RELEASE.jar!/:na]
标签: spring-data-jpa spring-data-rest