Comment spécifier multi-colonne OrderSpecifier pour une utilisation dans SpringData et QueryDsl? Est-ce possible
Donc, j'ai la requête suivante ci-dessous:
public Iterable<Dealer> findAll(Dealer dealer) {
QDealer qdealer = QDealer.dealer;
BooleanExpression where = null;
if(dealer.getId() != null && dealer.getId() != 0) {
buildPredicate(qdealer.id.goe(dealer.getId()));
}
OrderSpecifier<String> sortOrder = QDealer.dealer.dealerCode.desc();
Iterable<Dealer> results = dlrRpstry.findAll(where, sortOrder);
return results;
}
La requête ci-dessus fonctionne très bien. Cependant, je voudrais trier les résultats par dealerType d'abord, puis par dealerCode un peu comme "commande par dealerType asc, dealerCode desc". Comment puis-je créer une instance de la OrderSpecifier de sorte que les résultats seront triés par dealerType puis par le revendeur code.
La DealerRepository dlrRpstry s'étend JpaRepository, QueryDslPredicateExecutor
Je suis à l'aide de spring-data-jpa-1.1.0, spring-data-communes-dist-1.3.2 et querydsl-jpa-2.9.0.
Si OrderSpecifier peut ne pas être configuré pour un multi-ordre de tri des colonnes quelle serait la solution de rechange qui permettront de satisfaire ma demande de trier les résultats "par dealerType asc, dealerCode desc".
Toute aide serait grandement appréciée. Merci à l'avance.
Nick
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas JPA d'installation, mais je crois que la lecture de la QueryDslJpaRepository de la documentation, vous pouvez simplement faire ceci:
Laissez-nous savoir si cela fonctionne. Voici un lien vers un stackoverflow question/réponse qui explique la ... la syntaxe de paramètre sur la findAll() méthode:
https://stackoverflow.com/a/12994104/2879838
Cela signifie que vous pouvez avoir autant de OrderSpecifiers que vous souhaitez que les paramètres facultatifs à la fonction.