2017-08-03 14 views
0

スプリングデータ:ソートにPageRequestを使用しています。ソートはスプリングデータのネストしたオブジェクトリスト属性による並べ替え

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

動的な使用目的である財産 cityがあるアドレスで

private List<Address> addresses 

ユーザーにアドレスのリストを持っています。

私は同じ種類の都市を使いたいです。

私はorderByColumn="addresses.city" を試してみましたが、それは

を働いていない任意の手掛かりはありますか?事前

+1

あなたはユーザードメインクラスコード – CIPHER007

答えて

0

おかげで、自分のドメインであなたのList<Address>@OrderBy注釈を追加します。

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

EDIT:

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()メソッドを呼び出した場合、あなたのようなユーザーのための2つのJSONを取得しますこれは:

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

を共有してくださいすることができますが、これはデフォルトのsort..iあなたはAを適用したい – Musaddique

+0

ダイナミックソートを使用していますでしょうSCおよびDESCを使用している場合、または都市別にすべてのユーザーを住所別に並べ替える場合は、 –

+0

私は答えによって編集しました。 plsチェック –

関連する問題