获取春季数据表中特定项目的页码

西蒙·伦兹:

我正在使用spring-data-rest构建一个Web应用程序。

我想在前端的分页表中显示来自大数据库表的数据。该表仅从API异步加载当前页面。只需一个类似的存储库就可以很好地工作

public interface KeywordRepository extends JpaRepository<Keyword, String>, QuerydslPredicateExecutor<Keyword> {
}

现在,我想实现一项功能,以便在我的分页表中跳转到某个项目所在的正确页面。问题是我不知道特定项目在什么页面上。

我需要某种端点根据当前的过滤参数和排序参数告诉我特定项目的页码(按ID)。基本上findPageOfItemById(Long id, Pageable pageable)

我怎么能得到这个?

由于表很大,因此我不想将所有内容都存储在内存中。

西蒙·伦兹:

为了完整起见,我将回答我自己的问题。

它工作得很好,并且不需要将整个列表加载到内存中。但是我仍然希望找到更多关于春季数据的答案。

    @GetMapping("/getPositionOfItem/{id}")
    public long getPositionOfItem(@PathVariable String id, @QuerydslPredicate(root = SomeEntity.class) Predicate predicate, Pageable pageable) {
        Iterable<SomeEntity> elements = someEntityRepository.findAll(predicate, pageable.getSort());
        return findFirst(elements.iterator(), id);
    }

    private long findFirst(Iterator<SomeEntity> iterator, String id) {
        long index = 0;
        while (iterator.hasNext()) {
            if (iterator.next().getId().equals(id)) {
                return index;
            }
            index++;
        }
        return -1;
    }

请注意,我计算了项目的位置。要获取元素的页面,我们需要除以pagesize。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章