使用分页 JPA Postgresql 检索元素的全局索引

2024-03-07

在我的项目中,有一项检索文档列表的服务。到目前为止,检索它们的方法是使用分页对象,这样我们就不会将所有元素发送回前端。

    public Page<Document> findDocumentPage(Pageable pageable) {
        return this.documentService.findAllByPage(pageable);
    }

问题是我需要所有页面的文档的全局索引。例如,假设我有一个包含查询后结果的页面列表:

 firstResult:{
        page: 1,
        document_list: [{doc:{ id: a, content: ''}},
                        {doc:{ id: b, content: ''}},
                        {doc:{ id: c, content: ''}}]
    }

    secondResult:{
        page: 2,
        document_list: [{doc:{ id: d, content: ''}},
                        {doc:{ id: e, content: ''}},
                        {doc:{ id: f, content: ''}}]
    }

这些结果是相互独立的。有没有办法告诉 id 为“e”的文档是所有页面结果中的第五个元素,而无需访问上一页的结果。页面也可以有不同的大小,有些可能有 30 个结果,其他 20 个,它可以是 x。

我可以在后端存储一个包含前一页元素数量的列表,然后根据页码、当前页面的索引和前一页的大小计算索引。然而,这对我来说似乎不是一个很好的解决方案。


如果您有Page https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Page.html代表结果之一,可以轻松地对该页面中的所有元素进行计算,如下所示(模差一错误):

globalIndex = page.getPageable().getOffset() + localIndex

Where localIndex是相关元素的索引page.getContent().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用分页 JPA Postgresql 检索元素的全局索引 的相关文章

随机推荐