2013-11-01 6 views
25

ich versuche, eine Anwendung mit Frühlings-Data-PPV auf einem Tisch, um von ASC zu machen, aber es gibt mir eine Fehlermeldung:Sortierung nach Datum ASC mit Spring Data

Invalid derived query! No property asc found for type java.util.Calendar 

Warum?

List<Foo> findAllOrderByDateAsc(); 

oder

@Query("SELECT * FROM foo ORDER BY date ASC") 
List<Foo> findAllOrderByDateAsc(); 
+0

Nur eine Anmerkung. Die JPA QL Sie haben @Query ("SELECT * FROM foo ORDER BY Datum DESC") Liste findAllOrderByDateAsc(); Der Name zeigt "Asc" aber die Abfrage hat es als "DESC" – user1567291

+0

Ich habe meinen Beitrag bearbeitet, danke – MaximeF

Antwort

85

Try hinzufügen „Mit“ zwischen „Alle“ und „Order“ wie folgt aus:

List<Foo> findAllByOrderByDateAsc(); 
+0

der Trick mit dieser Antwort ist, dass nicht notwendig ist, @Query zu schreiben, sondern nur durch die richtige Benennung der Methode Spring-Daten werden die Abfrage OK generieren – OscarG

+0

Ausgezeichneter Job, danke ein Haufen. –

+0

Für mich ändert dies die IllegalArgumentException in eine NullPointerException, die von QueryUtils.toExpressionRecursively() ausgelöst wird. Ich benutze kein @Query. – user1944491

8

Ich glaube nicht, Sie findAll als Präfix verwenden können.

In Bezug auf die Abfrage ist select * nicht gültig JPQL. Es sollte

sein
select foo from Foo foo order by foo.date desc 
+0

Dies löst nicht das OP 'Problem. –

+1

Warum löst es das Problem nicht? Das Problem ist, dass die Abfrage ungültig ist, und ich sage ihm, was die richtige Abfrage ist. –

1

date ist reserviertes Wort in SQL. Versuchen Sie, die Tabelleneigenschaft zu foo_date, zum Beispiel zu ändern und neu schreiben Sie Ihre Abfrage als SELECT * FROM foo ORDER BY foo_date DESC

+0

Das ist nicht SQL. Es ist JPQL. –

+1

Korrigieren. Mein Fehler. @MaximeF siehe http://docs.spring.io/spring-data/jpa/docs/1.0.0.M1/reference/html/#jpa.query-methods.at-query – Bizmarck

+0

funktioniert nicht @Query ("SELECT f FROM foo f ORDER VON f.date DESC ") – MaximeF