2012-05-10 37 views
63

我在我的項目中嘗試Spring data JPA。我想知道是否有用於查詢數據的開箱即用API,通過SortPageable。當然,我知道我可以自己寫這個方法,我只是想知道是否有一個開箱即用的方法。吾道擴展JpaRepository,我發現有以下方法我可以調用:如何通過Sort和Pageable使用Spring數據JPA來查詢數據?

findAll(); 
findAll(Pageable pageable); 
findAll(Sort sort); 

但有沒有這樣的方法findAll(Sort sort, Pageable pageable),所以我很好奇。

回答

134

有兩種方法來實現這一目標:

final PageRequest page1 = new PageRequest(
    0, 20, Direction.ASC, "lastName", "salary" 
); 

final PageRequest page2 = new PageRequest(
    0, 20, new Sort(
    new Order(Direction.ASC, "lastName"), 
    new Order(Direction.DESC, "salary") 
) 
); 

dao.findAll(page1); 

正如你所看到的第二種形式更加靈活,因爲它允許爲每一個屬性(lastName ASC, salary DESC)定義了不同的方向。

+3

通過REST控件傳遞多列數據從Javascript排序可以通過以下Javascript數據完成:['name,asc','location,desc'] – Stephane

+0

感謝您的回答,它幫助了我!你能否把訂單改爲排序?這是排序春天的數據。 – curious1

+3

這是我的解決方案,但在春天它是:Pageableable = new PageRequest(0,20,new Sort(new Sort.Order(Direction.ASC,「name」),new Sort.Order(Direction.DESC,「salary」 ))); – Simon

12

Pageable還可以指定排序。來自java doc

PageRequest(int page, int size, Sort.Direction direction, String... properties) 

創建一個應用了排序參數的新PageRequest。

+2

這樣你就可以爲所有屬性設置一個排序方向。如果你想區分每個屬性的排序方向,你必須使用Tomasz指出的Sort對象。 – Mariusz

相關問題