web-dev-qa-db-fra.com

Comment trier par plusieurs propriétés dans les requêtes dérivées de Spring Data (JPA)?

Je regarde les exemples donnés sur cette page ( http://docs.spring.io/spring-data/jpa/docs/current/reference/html/jpa.repositories.html ) à propos de nom de méthode, est-il possible de créer un nom de méthode de chaîne complexe tel que

findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc

Dans l'exemple qu'ils donnent, ils ne font un OrderBy que sur une seule valeur. Dans l'exemple ci-dessus, ProgDate et StartTime seraient deux valeurs distinctes.

42
PDStat

L'astuce consiste à simplement délimiter les propriétés que vous souhaitez trier en utilisant les mots-clés de direction Asc et Desc. Donc, ce que vous voulez probablement dans votre méthode de requête, c'est quelque chose comme:

…OrderByProgDateAscStartTimeAsc

Remarquez comment nous concluons la première définition de propriété par Asc et continuons avec la propriété suivante.

De manière générale, nous vous recommandons de passer à @Query requêtes basées, une fois que les noms de méthode dépassent une certaine longueur ou complexité. La raison principale étant qu'il est gênant pour les clients d'appeler ces très longues méthodes. Avec @Query vous obtenez plutôt toute la puissance du langage de requête plus un nom de méthode de taille raisonnable qui pourrait être d'un langage de niveau supérieur pour exprimer l'intention de la requête.

103
Oliver Drotbohm

Oui, cela devrait être possible:

Essaye ça:

findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc(String programme, String director, Date progStart, Date progEnd);

Je n'ai pas testé le code, mais selon les choses que j'ai déjà faites, cela devrait fonctionner.

6
Paulo Fidalgo