【发布时间】:2020-11-05 13:14:55
【问题描述】:
我正在尝试使用 Spring Data JPA createNativeQuery 从 postgreSQL 数据库中获取计数。但是,查询返回的是 null 而不是实际值。
下面是 JPA createNativeQuery 语句:
Query q = entityManager.createNativeQuery("SELECT null AS id,
count(case when (IS_QUERIED = false AND SUBMITTED = true)
then 1 else null end) AS pending,
count(case when ( (SUBMITTED = true)) then 1 else null end) AS submitted,
count(*) AS totalApplications FROM ANNUAL_RETURNS ", AnnualReturn.class);
//Note: AnnualReturn is the name of the @Entity class
List <AnnualReturn> countList=q.getResultList();
return countList;
我需要帮助映射我的查询中的“已提交”、“待处理”和“totalApplications”实例,以返回如下结果。
预期结果是:
"data": {
"totalApplications": 2000,
"submitted": 560,
"pending": 60,
}
结果得到:
{
"data": [
null
]
我将不胜感激。
【问题讨论】:
-
我想你并不真的想要一个类型化的查询,看起来提交是一个布尔字段,你想在提交时返回一个数字。如果没有类参数,您可能会得到一个带有值的 Object[] 列表
-
我想将计数作为 Long 数据类型返回,其中提交的是“true”。因此,我希望创建一个映射/翻译层,因为单独的实体无法产生所需的结果。我将不胜感激。
-
SELECT null AS id获取 null 作为 id 的任何原因?您可以更新它以获取实际值select id或简单地执行select 0 as id吗?
标签: java postgresql spring-boot spring-data-jpa