我正在构建连接到ORACLE 11G DB的REST API。API使用JSON将数据发送到Android客户端。为了获取数据,我使用了JpaRepository和@Query
注释。
我想为图表提供数据:按年计算的合同数量。
我有原生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查询的结果如下所示:
我尝试使用原生查询获取结果:
但是结果总是这样的:
或者错误,这取决于我尝试什么。
是否可以使用@Query
获取count()
结果列表
如果不是,我应该使用什么?
提前感谢:-)
发布于 2019-06-04 17:17:45
我认为您在这里尝试使用的是spring数据投影。如参考文档中所述:
Spring数据查询方法通常返回由存储库管理的聚合根的一个或多个实例。但是,有时可能需要基于这些类型的某些属性创建投影。Spring Data允许对专用的返回类型进行建模,以更有选择性地检索托管聚合的部分视图。
尤其是闭合投影,其中所有访问器方法都与目标属性匹配。在您的情况下,计数不是聚合的属性。要执行您想要执行的操作,可以使用构造函数,如下所示:
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();
https://stackoverflow.com/questions/56439550
复制相似问题