1

我有以下查询:

@Query("select c from Category c where ( (lower(c.name) like '%' || lower(:searchText) || '%') or (lower(c.description) like '%' || lower(:searchText)) || '%')")

我的产品设计为在多个平台上运行,我在 postgreSQL 上遇到错误,即:

PSQLException:错误:OR 的参数必须是布尔类型,而不是文本类型。

这是不可理解的,因为 like 子句返回字符串。但我无法在一个查询请求中执行搜索。所以问题是如何在 where 条件引用 2 个不同列并使用“like”运算符的情况下执行搜索。

4

1 回答 1

3

您的括号不正确,以下应该有效:

@Query("select c from Category c " +
       "where (lower(c.name) like ('%' || lower(:searchText) || '%')) " +
         " or (lower(c.description) like ('%' || lower(:searchText) || '%'))")
于 2013-05-20T10:10:36.573 回答