0

目前 SDN4 不支持分页(参考:Spring Data Neo4j 4 中的分页和排序

可以自己指定 SKIP 和 LIMIT 子句来检索部分结果,但是对于我们的系统,我们还需要执行自定义分页查询时返回的 Page 的 getTotalPages()、isFirst() 和 isLast() 值。

我们是否有另一种方法可以使用 SDN4 / OGM 检索这些值?或者,是否有任何代码建议/参考可以供我们自己实现(可能在 Page 对象的构造中)?

谢谢!

4

1 回答 1

3

正如您所收集的,支持 Spring 的 Page 对象的 OGM 中的 Pagination 对象不使用页数或返回一个。Spring 的 Page 对象提供了一种返回总页数的方法,但这取决于底层实现 - Mongo、JPA、Neo4j 等。Spring 的 Page 对象使用这个值来确定是否存在“下一个”页面。我们的实现通过告诉 Spring 它总是这样做来“欺骗”——直到对新页面的请求返回的结果少于一页。

不幸的是,没有通用的方法来返回不涉及首先查找所有结果然后计算它们的页数。对可能返回数千行的自定义查询执行此操作会明显存在服务器堆空间不足的风险。(请注意,Neo4j 中使用 SKIP 和 LIMIT 的底层实现不必将所有结果预加载到内存中,因此不会遇到此问题)。

于 2015-08-14T15:47:06.907 回答