web-dev-qa-db-ger.com

Wie sortiere ich nach mehreren Eigenschaften in von Spring Data (JPA) abgeleiteten Abfragen?

Ich schaue mir die Beispiele auf dieser Seite ( http://docs.spring.io/spring-data/jpa/docs/current/reference/html/jpa.repositories.html ) an Es ist möglich, einen komplexen Namen für eine Kettenmethode zu erstellen, z

findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc

In dem von ihnen angegebenen Beispiel führen sie nur ein OrderBy für einen Wert aus. Im obigen Beispiel sind ProgDate und StartTime zwei separate Werte.

42
PDStat

Der Trick besteht darin, die zu sortierenden Eigenschaften einfach durch die Richtungsschlüsselwörter Asc und Desc abzugrenzen. Also, was Sie wahrscheinlich in Ihrer Abfragemethode wollen, ist etwa:

…OrderByProgDateAscStartTimeAsc

Beachten Sie, wie wir die erste Eigenschaftsdefinition mit Asc abschließen und mit der nächsten Eigenschaft weitermachen.

Generell empfehlen wir die Umstellung auf @Query basierte Abfragen, sobald Methodennamen eine bestimmte Länge oder Komplexität überschreiten. Der Hauptgrund dafür ist, dass es für Kunden umständlich ist, diese sehr langen Methoden aufzurufen. Mit @Query Sie erhalten eher die volle Leistungsfähigkeit der Abfragesprache und einen angemessen großen Methodennamen, der möglicherweise eine höhere Sprache aufweist, um die Absicht der Abfrage auszudrücken.

103
Oliver Drotbohm

Ja, es sollte möglich sein:

Versuche dies:

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

Ich habe den Code noch nicht getestet, aber nach meinen bisherigen Erfahrungen sollte er funktionieren.

6
Paulo Fidalgo