#java #postgresql #hibernate #jpa #sql-like
#java #postgresql #переход в спящий режим #jpa #sql-подобный
Вопрос:
Я пытаюсь проконсультироваться с использованием HIBERNATE и JPA.
это собственный запрос, и он работает на postgres
select * from table tb where upper(tb.column1) like any(array[?1]);
но когда я запускаю с использованием jpa, я получаю следующую ошибку
[42883] ОШИБКА: оператор не существует: текст ~ ~ запись Dica: Ни один оператор не соответствует заданному имени и типу (ам) аргумента. Возможно, вам потребуется добавить явные приведения типов.
Я вижу, что это потому, что hibernate запускает запрос следующим образом:
select * from table tb where upper(tb.column1) like any(array[('%text1%', '%texte2%')]);
и это должно быть без ‘()’ вот так:
select * from table tb where upper(tb.column1) like any(array['%text1%', '%texte2%']);
Вот как я работаю на JPA
@Query(nativeQuery = true, value = "SELECT column1 FROM table1 WHERE column1 LIKE ANY(ARRAY[?1])")
List<String> example(List<String> valores);
Как я могу это решить….
Комментарии:
1. Оператору ANY должен предшествовать один из следующих операторов сравнения =, <=, >, <, > и <> Это причина, по которой это не работает
Ответ №1:
Вы можете попробовать что-то вроде этого:
select * from (select unnest([array]) as colum_text from [table]) as temporal where temporal.colum_text like '%[value to search]%'