程序包org.springframework.data.neo4j.annotation中的注释@Query提供了某些计数属性,如countQuery,countQueryName。
/**
* @return simpler count-query to be executed for @{see Pageable}-support {self} will be provided by the node-id of the current entity other parameters (e.g. {name}) by the given named params
*/
String countQuery() default "";
定义一个特殊的count查询,用于分页查询时,查找页面元素的总个数。如果没有配置,将根据方法名派生一个count查询。
countQuery用于分页,如果要求分页结果返回正确的总计数,@Query 注释可以在 countQuery 属性中与计数查询一起提供。此查询在结果查询之后单独执行,其结果用于填充返回的 Page 的 totalCount 属性。
官方文档地址:Query (Spring Data JPA 2.6.0 API)
Spring-Data-Jpa目前不支持对nativeQuery=true时的Sort动态排序,对于原生SQL来说,它不能可靠地执行这种操作。但是可以通过指定count查询来使用分页。
/**
* 根据性别查询并分页,原生SQL,不能使用SEX枚举,要使用String
* @param sex sex
* @param pageable pageable
* @return page
*/
@Query(value = "SELECT * FROM cfq_jpa_user WHERE sex = ?1 ",
countQuery = "SELECT count(*) FROM cfq_jpa_user WHERE sex = ?1 ",
nativeQuery = true)
Page<User> findBySexString(String sex, Pageable pageable);