2013-11-01 77 views
25

我試圖通過ASC進行,以便與彈簧數據的JPA桌子上的應用程序,但它給了我一個錯誤:按日期排序ASC與Spring數據

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

爲什麼?

List<Foo> findAllOrderByDateAsc(); 

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

剛一說明。您有JPA QL @Query(「SELECT * FROM foo ORDER BY date DESC」) List findAllOrderByDateAsc(); 名稱顯示「Asc」,但查詢將其作爲「DESC」 – user1567291

+0

我編輯了我的帖子,謝謝 – MaximeF

回答

85

嘗試添加「通過」與「所有」和「訂單」像這樣:

List<Foo> findAllByOrderByDateAsc(); 
+0

這個答案的訣竅是沒有必要編寫@Query,但只需通過正確的方式命名該方法Spring數據將生成查詢正常 – OscarG

+0

優秀的工作,謝謝一堆。 –

+0

對我來說,這會將IllegalArgumentException更改爲QueryUtils.toExpressionRecursively()引發的NullPointerException。我沒有使用@Query。 – user1944491

8

我不認爲你可以使用的findAll作爲前綴。

關於查詢,select *是無效的JPQL。它應該是

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

這並不解決OP的問題。 – 2013-11-01 19:05:41

+1

爲什麼它不解決問題?問題是查詢無效,我告訴他什麼是正確的查詢。 –

1

date是SQL中的保留字。嘗試改變表屬性foo_date,例如和重寫查詢爲SELECT * FROM foo ORDER BY foo_date DESC

+0

這不是SQL。這是JPQL。 –

+1

正確。我的錯。 @MaximeF參見http://docs.spring.io/spring-data/jpa/docs/1.0.0.M1/reference/html/#jpa.query-methods.at-query – Bizmarck

+0

它不工作@Query(「SELECT f FROM foo f ORDER BY f.date DESC「) – MaximeF