如何使用Couchbase的spring数据进行分页和排序

时间:2015-06-23 05:47:24

标签: java sorting spring-data paging couchbase

我正在尝试使用spring-data-couchbase进行分页和排序,但似乎org.springframework.data.couchbase.repositoryCouchbaseRepository正在扩展CrudRepository<T,ID>

没有从PagingAndSortingRepository<T,ID>延伸的界面。

http://docs.spring.io/spring-data/couchbase/docs/1.0.x/api/org/springframework/data/couchbase/repository/CouchbaseRepository.html

我确实为问题设置跳过和限制实施了一个非传统的解决方案。但是想要获得总页数,这是此解决方案所不具备的。 似乎Page<T>确实有.getTotalPages()

3 个答案:

答案 0 :(得分:0)

目前没有Spring Data Couchbase的分页支持,您需要使用较低级别的API,这基本上是Couchbase的Java SDK的第一个版本。

答案 1 :(得分:0)

由于Spring-Data-Couchbase 2.0.x支持PagingAndSortingRepository分页和排序数据。

界面定义:

public interface PagingAndSortingRepository<T, ID extends Serializable>
  extends CrudRepository<T, ID> {

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

分页项目示例:

public interface ProjectRepository extends PagingAndSortingRepository<Project, String> {

    Page<Project> findByName(String name, Pageable pageable);
}

答案 2 :(得分:0)

4年以来,令人遗憾的是仍然没有ReactiveCouchbasePagingAndSortingRepository。 相反,我将使用索引,并选择offset参数和count的组合来解决此问题。 https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/aggregatefun.html#countn https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/offset.html

@Query("#{#n1ql.selectEntity} where #{#n1ql.filter} ORDER BY name LIMIT $1 OFFSET $2;")
Flux<Location> findPage(int limit, int offset);

如果他们确实添加了它,它应该显示在此处(或在更高版本中)

https://docs.spring.io/spring-data/couchbase/docs/4.0.x/api/index.html?org/springframework/data/couchbase/repository/package-tree.html