2017-10-21 43 views
-1

我可以在結束表達式時給出排序參數嗎?因爲我需要在over()函數內使用sort參數。彈簧數據使用排序不在末尾

例如:

@Query(value = "...?2...over(?4)...?1...?3") 
myMethod(int a,int b,int c,Sort sort); 

或表達式排序裏面了: - #排序\ n#{#排序} ..

我仍然得到:

的java .lang.IllegalArgumentException:驗證方法的查詢失敗public abstract java.lang.Integer ...方法的名稱..(int,int,int,org.springframework.data.domain.Sort)!

+1

做了更多信息,你讀了[DOC](https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa。查詢methods.sorting)?你能發佈[mcve]並完成堆棧跟蹤嗎? – 2017-10-21 08:04:29

回答

0

Sort類型的參數得到Spring Data JPA的特殊處理。

即使不是這樣,您嘗試實現的情況不能用簡單的綁定參數完成,因爲這些位置允許通過SQL綁定參數。

取決於你想要達到你也許可以做類似下面的內容:

@Query("select .... over(... order by CASE ?1 WHEN "first THEN first 
    WHEN 'last' THEN last 
    END") 
public Something method(String columnNameForSorting) 

假設你有你想要的排序之間進行切換列firstlast

Standard SQL alternative to Oracle DECODE有關CASE表達式

+0

對於直接將完成字符串轉換爲like(按?4順序)轉換爲sql,sql返回的結果不好。但如果我按照這種方式嘗試,就像你寫的那樣,這很好。謝謝! – Victorio

+0

如果這解決了問題,請接受它(單擊對號)並加註。特別是複選標記可以讓其他人發現解決問題的問題。 –