2017-07-10 2 views
0

Est-il possible de faire en sorte que ces fonctions obtiennent les résultats ordonnés dans l'ordre de la liste (ou collection) donnée à la fonction pour la recherche in?Dépôt de données Spring: findBySomething *** Dans *** et l'ordre des résultats

exemple simple d'une fonction d'interface de référentiel de données de printemps:

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

maintenant im la création d'une liste de chaînes avec l'ordre « vert », « bleu », « cyan » et d'appeler cette fonction.

Si l'on suppose il y a une correspondance de ces trois couleurs:

comment puis-je faire de la fonction renvoyant les résultats par l'ordre donné de la propriété dans la liste donnée? Dans cet exemple:

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

Je ne sais pas ce qui est l'ordre par défaut dans ce cas, mais im en supposant que l'id ...

+0

Il semble y avoir une bonne solution ici: https://stackoverflow.com/a/47042709/66686 –

Répondre

2

données ressort présente deux variantes avec api comment vous pouvez utiliser ordre standard basé sur la propriété.

1 variante:

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

2 variante

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

si vous souhaitez utiliser ordre personnalisé pour le cas, l'ordre de tri: color = "vert", color = "blue", la couleur = "cyan"

vous avez besoin d'utiliser la variante 2 avec une implémentation de tri personnalisée basée sur votre logique de tri.

Vous pouvez également obtenir le résultat non trié et le trier du côté serveur si vous avez un petit jeu de résultats. les données de printemps pourraient revenir flux, de sorte que vous pouvez faire quelque chose comme:

findByColorIn(colors).stream().sorted(comparator....).collect(Collectors.toList()); 
0

Dans mon cas, je viens triai la main puisque je ne traite pas avec un tableau très longue d'articles.

D'abord, vous récupérez les éléments de la base de données dans l'ordre de leur choix, puis comparez-les avec votre liste de couleurs et triez-les en conséquence.