gpt4 book ai didi

java - 获取 Spring Data Rest 中特定项目的页码

转载 作者:行者123 更新时间:2023-12-01 17:56:56 26 4
gpt4 key购买 nike

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

我想在前端的分页表中显示来自大型数据库表的数据。该表仅从 API 异步加载当前页面。只需拥有一个像

这样的存储库,就可以开箱即用,一切正常。
public interface KeywordRepository extends JpaRepository<Keyword, String>, QuerydslPredicateExecutor<Keyword> {
}

现在我想实现一个功能,在分页表中跳转到某个项目所在的正确页面。问题是我不知道该特定项目位于哪个页面。

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

我怎样才能得到这个?

由于表格很大,我不想将全部内容都存储在内存中。

最佳答案

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

它工作得非常好,并且没有按照要求将整个列表加载到内存中。但我仍然希望找到更多 spring-data-resty 答案。

    @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;
}

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

关于java - 获取 Spring Data Rest 中特定项目的页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com