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

时间:2019-06-04 07:50:30

标签: java sql hibernate nativequery spring-repositories

我正在构建连接到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的查询结果如下:

我尝试使用本机查询获得结果:

但是结果总是这样:

还是错误,取决于我的尝试。

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

如果没有,我应该怎么用?

预先感谢:-)

1 个答案:

答案 0 :(得分:0)

我认为您要在这里使用的是Spring数据投影。 如参考文档中所述:

  

Spring Data查询方法通常返回一个或多个实例   存储库管理的聚合根。但是,可能   有时希望根据某些   这些类型的属性。 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();