【问题标题】:How to get count returned by countQuery in Spring Data JPA?如何在 Spring Data JPA 中获取 countQuery 返回的计数?
【发布时间】:2022-01-17 21:44:04
【问题描述】:

我在Repository 层中同时使用nativeQuerycountQuery 作为:

@Query(value = "select * FROM Person p where p.forename = :forename and p.surname = :surname",
countQuery = "SELECT count(*) FROM Person p where p.forename = :forename",
  nativeQuery = true)
User findByForenameAndSurname(@Param("surname") String lastname,
                             @Param("forename") String firstname);
}

我想要这个 countQuery 返回的整数计数,并且我想使用该计数来构造我想用于 nativeQueryPageRequest 对象以获取 Page 对象。我可以在构造PageRequest 对象之前访问此计数吗? 有什么办法可以得到countQuery返回的值吗?

【问题讨论】:

  • 不,没有办法期望您只为 cound 创建其他查询。但我不明白你为什么需要计数。
  • @simon-martinelli 我的计数查询表示我想返回给用户的记录数,这是对象的实际计数,但我的本机查询返回多行(有点有 4 个不同的行表中有一个 obj)。我需要这个计数来形成我的原生查询

标签: spring-boot hibernate jpa spring-data-jpa spring-data


【解决方案1】:

如果您需要该页面,只需将其返回:

@Query(value = "select * FROM Person p where p.forename = :forename and p.surname = :surname",
      countQuery = "SELECT count(*) FROM Person p where p.forename = :forename",
      nativeQuery = true)
Page<User> findByForenameAndSurname(@Param("surname") String lastname,
                             @Param("forename") String firstname);
}

Page 对象将包含您需要的所有内容。

【讨论】:

  • 谢谢。但是假设 countQuery 返回计数为 1,而我的 nativeQuery 返回 4 条记录,那么我的页面对象将有 4 条记录还是 1 条记录?
  • 如果是这种情况,您就违反了规则。 Count 必须返回查询将返回的数字!!!!
猜你喜欢
  • 1970-01-01
  • 2020-03-16
  • 2013-03-07
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 2015-01-13
  • 2020-03-26
  • 1970-01-01
相关资源
最近更新 更多