我正在尝试使用
spring-data-couchbase
进行分页和排序,但似乎org.springframework.data.couchbase.repository
只有CouchbaseRepository
,它正在扩展CrudRepository<T,ID>
。
没有从
PagingAndSortingRepository<T,ID>
延伸的接口。
我确实实现了一个非常规的解决方案来设置跳过和限制的问题。但想要获取总页数,此解决方案无法提供此功能。 看来
Page<T>
确实有.getTotalPages()
以下是使分页正常工作的步骤。
4.3.1
或更高版本extends CouchbaseRepository<Object, Object>
Pagebale
对象。Page<Object> findAllById(String id, Pageable page)
就是这样
目前 Spring Data Couchbase 不支持分页,您需要使用较低级别的 API,这基本上是 Couchbase 的 Java SDK 的第一个版本。
自 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);
}
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);
如果他们确实添加了它,它应该出现在此处(或更高版本中)