【发布时间】:2013-05-20 08:10:15
【问题描述】:
我有以下查询:
@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”运算符的情况下执行搜索。
【问题讨论】:
-
尝试为组操作添加显式括号。我认为您遇到了运算符优先级问题。
-
你的意思是在比较参数周围添加括号?如果是这样,我没有工作
-
你能告诉我你尝试了什么(你在哪里添加了括号)以及它“没有用”吗?请包括您的 PostgreSQL 版本和 EclipesLink/Hibernate/whatever 将 HQL 转换为的真正底层 SQL。您可以使用
log_statement = 'all'从 PostgreSQL 日志或您的 ORM 的日志中获取。
标签: spring postgresql jpa sql-like