页面内容的 SDN4 自定义查询分页替代方案

SDN4 custom query pagination alternative for Page contents

目前 SDN4 不支持分页(参考:

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

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

谢谢!

如您所知,支持 Spring 的 Page 对象的 OGM 中的 Pagination 对象不使用页数或 return 页数。 Spring 的 Page 对象提供了一个方法来 return 总页数,但这取决于底层实现 - Mongo、JPA、Neo4j 等来实现它。 Spring 的页面对象使用此值来确定 "next" 页面是否存在。我们的实现 "cheats" 通过告诉 Spring 它始终如此 - 直到对新页面的请求 return 少于一页结果。

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