2017-10-14 52 views
-1

所以我的問題是以下內容:像在春季聯盟JPES不起作用

我有一個表我想過濾器適用於。此過濾器應調用基於給定信息查找報告的查詢。

這是我的查詢的外觀:

@Query("SELECT r FROM Report r WHERE r.importanceLevel = COALESCE(importance,'%')" + 
     "AND r.source = COALESCE(source,'%')" + 
     "AND r.resolvedStatus = COALESCE(resolvedStatus,'%')" + 
     "AND r.header LIKE + '%' COALESCE(query,'%') + '%'") 
    List<Report> getReportsByAppliedFilter(@Param("importance") int importance, @Param("source") String source, 
             @Param("resolvedStatus") int resolvedStatus, @Param("query") String query); 

問題是:的IntelliJ不喜歡以下內容:

LIKE + '%' COALESCE(query,'%') + '%' 

錯誤:預期,拿到+

你有什麼想法否則如何解決這個問題?

+1

你爲什麼不再看看那個表達式?你爲什麼試圖將'LIKE'關鍵字與''%''字符串連接起來?你期望它對''%'COALESCE(...),'%'和'COALESCE'之間沒有操作符嗎?「 - 如果你現在想要模仿荷馬辛普森,那將是合適的:* DOH!* ---多年來我自己幾次模仿荷馬。 – Andreas

+0

@Andreas http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=25086在這裏他們也使用它。 –

+0

我不知道你在哪裏看到一個操作員失蹤... –

回答

0

是的,有時間去睡覺。你不使用+作爲concat,你使用concat():

@Query(value = "SELECT r FROM Report r WHERE r.importanceLevel = COALESCE(importance,'%')" + 
     "AND r.source = COALESCE(source,'%')" + 
     "AND r.resolvedStatus = COALESCE(resolvedStatus,'%')" + 
     "AND r.header LIKE CONCAT('%', COALESCE(query,'%'), '%')")