【问题标题】:How to obtain list of count() results using JpaRepository @Query?如何使用 JpaRepository @Query 获取 count() 结果列表?
【发布时间】:2019-10-19 17:28:33
【问题描述】:

我正在构建连接到 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() 结果列表?

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

提前致谢:-)

【问题讨论】:

  • 添加@Query 代码.. 不是img
  • 这些结果也可以作为文本发布
  • 同时添加 NumberOfContracts 类。

标签: java sql hibernate nativequery spring-repositories


【解决方案1】:

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

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    相关资源
    最近更新 更多