У меня есть следующий фрагмент для создания запроса:
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 соответствует аналогичному выражению выше):
ОШИБКА: оператор не существует: текст ~~ bigint в символе 1570
СОВЕТ: ни один оператор не соответствует заданному имени и типу аргумента. Вам может потребоваться добавить явные приведения типов.
VARIABLE_VALUE
имеет тип text
в базе данных, и данный параметр $2
должен быть String
, а не BIGINT
.
Не знаю, почему выход variable.get("value")
преобразуется в BIGINT
вместо String
.
Настройки:
База данных: Postgres 12.2
Hibernate Dialect: PostgreSQL94Dialect
Драйвер postgresql -42.2.11.jar
Версия Hibernate: hibernate-jpa-2.1-api