2017-08-03 205 views
0

彈簧數據:我正在使用PageRequest進行排序。排序是動態的彈性數據按嵌套對象列表屬性排序

String orderByColumn="name" 
PageRequest pageRequest = new PageRequest(offset, pageSize, Sort.Direction.ASC, orderByColumn); 

使用對象有地址的用戶

private List<Address> addresses 

列表中的地址有物業city

我想對城市使用相同的排序。

我試圖orderByColumn="addresses.city" 但它不工作

有沒有什麼線索?

在此先感謝

+1

能否請您分享您的用戶域類代碼 – CIPHER007

回答

0

List<Address>添加@OrderBy標註在您的域。

@OneToMany(...) 
@OrderBy("city") 
private List<Address> addresses; 

編輯:

它可以同時獲得ASC和DESC根據城市單個查詢訂購地址。首先,你需要在地址標註@OrderBy("city DESC")這樣的:

@OneToMany(...) 
@OrderBy("city DESC") 
private List<Address> addresses; 

之後,你需要創建2吸氣劑是這樣的:

// this simply get address which is in descending order 
    public List<Address> getAddressesWithCitiesSortedInDesc() { 
     return addresses; 
    } 

    // this will make descending ordered address to ascending order 
    public List<Address> getAddressesWithCitiesSortedInAsc() { 
     Collections.sort(addresses, new Comparator<Address>(){ 
      public int compare(Address a1, Address a2){ 
       return a1.getCity().compareTo(a2.getCity()); 
      } 
     }); 
     return addresses; 
    } 

如果調用findAll()方法,你會得到兩個JSON像用戶這樣的:

"addressesWithCitiesSortedInAsc": [ 
       {..}, 
       {..} 
      ], 
    "addressesWithCitiesSortedInDesc": [ 
       {..}, 
       {..} 
      ] 
+0

但是這將是默認sort..i正在使用動態排序 – Musaddique

+0

你想應用SC和DESC的地址,或者您想根據所在城市的地址對所有用戶進行排序? –

+0

我已經編輯回答。請檢查 –