我有以下代码段可创建查询:
predicate.add(criteriaBuilder.like(map.get("value"), variable.get("value")));
variable.get("value")
返回一个String
,而map.get("value")
返回一个Expression<String>
。
生成的查询如下所示:
where variables.VARIABLE_VALUE like $2
数据库日志显示以下错误(字符1570与上面的类似表达式相对应):
错误:运算符不存在:字符1570处的文本~~ bigint
提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
VARIABLE_VALUE
在数据库中的类型为text
,给定的参数$2
应该是String
而不是BIGINT
。
我不知道为什么将variable.get("value")
的输出转换为BIGINT
而不是String
。
设置:
数据库:Postgres 12.2
休眠方言:PostgreSQL94Dialect
驱动程序postgresql-42.2.11.jar
Hibernate版本:hibernate-jpa-2.1-api