簡體   English   中英

獲取spring data rest中特定項目的頁碼

[英]Get page number of specific item in spring data rest

我正在使用 spring-data-rest 構建一個 Web 應用程序。

我想在前端的分頁表中顯示來自大數據庫表的數據。 該表僅從 API 異步加載當前頁面。 只需擁有一個像這樣的存儲庫,就可以開箱即用

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

現在我想實現一個功能,在我的分頁表中跳轉到某個項目所在的正確頁面。 問題是我不知道特定項目在哪個頁面上。

我需要某種端點根據當前的過濾器和排序參數告訴我特定項目的頁碼(按 id)。 基本上findPageOfItemById(Long id, Pageable pageable)

我怎樣才能得到這個?

由於表很大,我不想把整個內容都放在內存中。

為了完整起見,我將回答我自己的問題。

它工作得非常好,並且沒有按照要求將整個列表加載到內存中。 但我仍然希望找到更多的spring-data-rest y 答案。

    @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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM