2017-01-17 21 views
0

我想獲得結果分頁,下面的代碼可以正常工作,如果請求是在頁面參數設置爲0的情況下進行的,但不適用於頁面> 0,如頁面= 1或頁面= 2或頁面= 3等Springboot JPA Pageable不適用於頁碼大於0

這裏是我的RequestMapping

MyResponse getSample(@ModelAttribute MyRequest MyRequest) { 
     Pageable pageRequest = new PageRequest(MyRequest.page, MyRequest.size) 
     MyModule.findSamples(MyRequest, pageRequest) 
    } 



class MyRequest { 

    MyQueryType queryType 


    String searchTerm 


    @Min(value = 0L, message = 'Offset must be greater than or equal to 0') 
    int offset = 0 

    @Min(value = 0L, message = 'Offset must be greater than or equal to 0') 
    int page = 0 

    @Min(value = 1L, message = 'Limit must be greater than or equal to 1') 
    int limit = 100 

    @Min(value = 1L, message = 'Limit must be greater than or equal to 1') 
    int size = 5 
} 


MyModule:Code inside my Module 



MyResponse findSamples(MyRequest MyRequest, Pageable pageRequest) { 
      log.info("Page Information Set "+pageRequest.pageNumber+pageRequest.pageSize) 
      Page<SamplesPO> pages = null 
      pages = MyRepository.findAllById(MyRequest.Id, pageRequest) 
      } 

庫代碼:

public interface SampleRepository extends JpaRepository<Sample, Long> { 

     @Query(''' 
     select e.Samples 
     from ParentSampleTable e 
     where e.Id = :Id 
    ''') 
    Page<Sample> findAllById(@Param('Id') String Id, Pageable pageRequest) 
} 
+0

這是SPring Data JPA API(!= JPA API)。 Pageable/Repository與JPA API無關。標記已修復 –

回答

0

你可以嘗試提取id@PathParam

方法getSample標註有@GetMapping使用參數(@PathParam("id") String id, Pageable pageable),它可以返回sampleRepository.findAllById(id, pageable)

URL可能看起來像:/samples/id?page=pageNr&size=nrOfElemOnPage

你的庫應該返回 Page<Sample> findAllById(String id, Pageable pageable)

也請考慮重構(縮進)的代碼發佈到計算器之前

這也可能是重複的:Using findAll PagingAndSortingRepository with filter

+0

我能夠通過編寫自己的PageRequest類來實現Pageable Interface來解決問題。首先,我有SearchRequest類代替PathParam ID,第二我沒有在URL中獲取頁面。我在SearchRequest中獲得偏移和限制。所有@query中最重要的是從Parent表中返回Child記錄,所以我必須通過創建一個Join到Parent表來重寫Query以從Child表中返回Child記錄。 – Bitton

相關問題