Spring JPA 中的 LIKE COALESCE 不起作用

Seb*_* G. -1 java spring jpa spring-data spring-data-jpa

所以我的问题如下:

我有一个表想要应用过滤器。该过滤器应调用一个查询,该查询根据给定的信息查找报告。

这就是我的查询的样子:

   @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);
Run Code Online (Sandbox Code Playgroud)

问题是:IntelliJ 不喜欢以下内容:

 LIKE + '%' COALESCE(query,'%') + '%'
Run Code Online (Sandbox Code Playgroud)

错误:预期,得到+

您知道如何解决这个问题吗?

Seb*_* G. 5

是的,该睡觉了。您不使用 + 来 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,'%'), '%')")
Run Code Online (Sandbox Code Playgroud)