2017-10-14 53 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,'%'), '%')")