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

问题描述 投票:0回答:4

我正在尝试使用

spring-data-couchbase
进行分页和排序,但似乎
org.springframework.data.couchbase.repository
只有
CouchbaseRepository
,它正在扩展
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()

java sorting pagination spring-data couchbase
4个回答
1
投票

以下是使分页正常工作的步骤。

  1. 将 spring-data-couchbase 版本更新至
    4.3.1
    或更高版本
  2. 使用
    extends CouchbaseRepository<Object, Object>
  3. 构建
    Pagebale
    对象。
  4. Page<Object> findAllById(String id, Pageable page)

就是这样


0
投票

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


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

0
投票

4 年过去了,遗憾的是仍然没有 ReactiveCouchbasePagingAndSortingRepository。 相反,我将使用索引以及偏移参数和计数选择的组合来解决这个问题。 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

© www.soinside.com 2019 - 2024. All rights reserved.