2017-07-10 16 views
0

検索のための関数に与えられたリスト(またはコレクション)の順番のような順序で結果を取得する方法はありますか?ばねデータリポジトリインターフェース機能の春のデータリポジトリ:findBySomething *** ***と結果の順序

簡単な例:

public void List<Entity> findByColorIn(List<String> colors)

すぐ注文「緑色」の文字列リストを作成イム、「青」、「シアン」と、この関数を呼び出します。

がどのように私は与えられたリスト内のプロパティの指定された順序で結果を返す関数を作ることができます。

すべてのこれらの3色のユニークな一致があると仮定すると?この例では:いただきました。この場合、デフォルトの順序ですが、idを想定したイム

Entity[id=32, color="green"] 
Entity[id=11, color="blue"] 
Entity[id=22, color="cyan"] 

わからない...

+0

ここでは良い解決策があるようです:https://stackoverflow.com/a/47042709/66686 –

答えて

2

春のデータを使用すると、プロパティに基づいて、標準的な順序を使用することができますどのようにAPIを持つ2つのバリエーションがあります。

1変種:

public void List<Entity> findByColorInOrderByColorDesc(List<String> colors) 
public void List<Entity> findByColorInOrderByColorAsc(List<String> colors) 

2バリアント

Sort sort= new Sort(Sort.Direction.ASC/DESC,"color"); 
public void List<Entity> findByColorIn(List<String> colors , Sort sort) 

あなたはケースのためのカスタムオーダーを使用する場合は、ソート順: 色= "緑"、色= "青"、色= "シアン"

あなたのソートロジックに基づいてカスタムソートの実装を使用する必要があります。

小さな結果がある場合は、結果をソートしてサーバー側でソートすることもできます。私はアイテムの非常に長い列を扱っていなかったので、私はちょうど手でそれをソート

私の場合は
findByColorIn(colors).stream().sorted(comparator....).collect(Collectors.toList()); 
0

:あなたのような何かを行うことができますので、春のデータは、ストリームを返すことがあります。

まず、データベースから要素を取得してから順番に取得してから、カラーリストと比較してそれに応じて並べ替えます。

関連する問題