Я создал функцию postgresql для получения всех событий в определенных регионах на основе таких регионов:
Код: Выделить всё
CREATE OR REPLACE FUNCTION get_all_events_in_regions(regionIds int[])
RETURNS SETOF events AS $$
BEGIN
RETURN QUERY
SELECT DISTINCT ON (e.id)
e.id,
e.event_type_id,
e.vehicle_id,
e.event_status_id,
e.event_title,
...
FROM events as e
JOIN vehicle_region vr ON e.vehicle_id = vr.vehicle_id
WHERE vr.region_id = ANY(regionIds);
END;
$$ LANGUAGE plpgsql;
Код: Выделить всё
SELECT * FROM get_all_events_in_regions(ARRAY[1, 3, 6]);
Внутри EnventRepository я создал собственный метод запроса, подобный этому:
Код: Выделить всё
@Query(value = "SELECT e.* FROM get_all_events_in_regions(CAST(:regionIds as int[]) e", nativeQuery = true)
List getAllEventsInRegions(@Param("regionIds") List regionIds, Pageable pageable);
regionIds обычный ArrayList, когда я его регистрирую.
Я также пробовал без CASTING в int[], но ошибка была:
PSQLException: ОШИБКА: функция get_all_events_in_regions (целое, целое, целое, целое, целое, целое, целое, целое, целое, целое) не существует
Подсказка: ни одна функция не соответствует данному имени и типам аргументов. Возможно, вам придется добавить явное приведение типов.
И я не знаю, что происходит и как это исправить.
Заранее спасибо за вашу помощь
Подробнее здесь: https://stackoverflow.com/questions/770 ... ntax-error
Мобильная версия