У меня есть интерфейс хранилища данных Spring, подобный этому:
public interface MyEntityRepository extends
JpaRepository<MyEntity, Long> {
@Query(nativeQuery = true, value = "select * from my_func(:myList)")
Page<MyEntity> findBy(
@NonNull @Param("myList") List<String> myList,
@NonNull Pageable pageable);
}
Функция Postgres Я определил вот так (но я могу изменить ее, если я сделал это неправильно):
CREATE OR REPLACE FUNCTION my_func(variadic myList text[])
RETURNS SETOF myEntityTable AS $$
... some logic
select * from myEntityTable t where t.foo in (myList);
Когда я вызываю этот метод репозитория, я получаю эту ошибку:
ERROR: operator does not exist: character varying = text[]
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Where: PL/pgSQL function f_najdi_autorizaciu_na_spracovanie(text[]) line 28 at RETURN QUERY
Можете ли вы сказать мне, какой тип я должен использовать в моей функции postgres?Спасибо за совет.
РЕДАКТИРОВАТЬ: Я не могу использовать собственный запрос выше метода репозитория и передать там список в предложении IN, потому что у меня в функции БД больше логики, переменных и так далее ... это должна быть функция БД.