gpt4 book ai didi

java - 如何使用 JpaRepository @Query 获取 count() 结果列表?

转载 作者:行者123 更新时间:2023-12-02 04:51:19 29 4
gpt4 key购买 nike

我正在构建连接到 ORACLE 11G DB 的 REST API。 API 使用 JSON 将数据发送到 Android 客户端。为了获取数据,我使用 JpaRepository 和 @Query 注释。

我想提供图表数据:以年为单位的契约(Contract)数量。

我有 native SQL 查询:

select aa.ROK, count(aa.NUMER_UMOWY) 
from (select distinct NUMER_UMOWY, ROK from AGR_EFEKTY) aa
group by aa.ROK order by aa.ROK

使用 SQL Developer 查询的结果如下所示:

我尝试使用 native 查询获取结果:

但结果总是这样:

或错误,具体取决于我的尝试。

是否可以使用@Query获取count()结果列表?

如果没有,我应该使用什么?

提前致谢:-)

最佳答案

我认为您在这里尝试使用的是 Spring 数据投影。正如引用文档中所述:

Spring Data query methods usually return one or multiple instances of the aggregate root managed by the repository. However, it might sometimes be desirable to create projections based on certain attributes of those types. Spring Data allows modeling dedicated return types, to more selectively retrieve partial views of the managed aggregates.

特别是封闭投影,其中所有访问器方法都与目标属性匹配。在您的情况下,计数不是聚合的属性。要执行您想要的操作,您可以使用构造函数,如下所示:

class ContractsDto{


private String rok;
private int count;

public ContractsDto(String rok, int count) {
this.rok=rok;
this.count =count;
}
// getters
}

查询将是:

@Query(value = "select new ContractsDto(aa.rok , /*count */) from fromClause")
List<ContractsDto> getContractsPerYear();

关于java - 如何使用 JpaRepository @Query 获取 count() 结果列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56439550/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com