Когда я использую функцию postgresql с пружинной загрузкой, она возвращает ошибку несоответствия данных при использовании параметра массива.
У меня есть файл модели.Я последовательно сохраняю данные в этот файл модели.Когда я отправляю это функции следующим образом, я получаю сообщение об ошибке.
StoredProcedureQuery subscriber = entityManager.createStoredProcedureQuery("fn_subscriber_to_iservice");
subscriber.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN);
subscriber.registerStoredProcedureParameter(2, Integer.class, ParameterMode.IN);
subscriber.registerStoredProcedureParameter(3, String.class, ParameterMode.IN);
subscriber.registerStoredProcedureParameter(4, String.class, ParameterMode.IN);
subscriber.registerStoredProcedureParameter(5, Double.class, ParameterMode.IN);
subscriber.registerStoredProcedureParameter(6, Double.class, ParameterMode.IN);
subscriber.registerStoredProcedureParameter(7, Double.class, ParameterMode.IN);
subscriber.registerStoredProcedureParameter(8, Integer.class, ParameterMode.IN);
subscriber.registerStoredProcedureParameter(9, Integer.class, ParameterMode.IN);
**subscriber.registerStoredProcedureParameter(10, Object[].class, ParameterMode.IN)**;
subscriber.setParameter(1, Integer.valueOf(String.valueOf(payload.getService_id())));
subscriber.setParameter(2, Integer.valueOf(String.valueOf(userDetail.getId())));
subscriber.setParameter(3, String.valueOf(payload.getStart_date()));
subscriber.setParameter(4, String.valueOf(payload.getEnd_date()));
subscriber.setParameter(5, payload.getTotal_price());
subscriber.setParameter(6, 0.00);
subscriber.setParameter(7, payload.getPrice_per_person());
subscriber.setParameter(8, Integer.valueOf(String.valueOf(payload.getStart_station_id())));
subscriber.setParameter(9, Integer.valueOf(String.valueOf(payload.getEnd_station_id())));
**subscriber.setParameter(10, payload.getPassengers().toArray());**
Параметры функции PostgreSQL
CREATE OR REPLACE FUNCTION "public"."fn_subscriber_to_iservice"("_service_id" int4, "user_id" int4, "_start_date" varchar, "_end_date" varchar, "total_price" float8, "total_month" float8, "price_per_person" float8, "_start_station_id" int4, "_end_station_id" int4, "passengerlist" json)
ОШИБКА
ОШИБКА 15464 --- [nio-8080-exec-1] oaccC [. [. [/]. [DispatcherServlet]: Servlet.service () для сервлета [dispatcherServlet] в контексте спуть [] выдал исключение [Ошибка обработки запроса;вложенным исключением является javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: ошибка вызова CallableStatement.getMoreResults] с первопричиной org.postgresql.util.PSQLException: ошибка: функцияточность, двойная точность, двойная точность, целое число, целое число, байт) не существует İpucu: ни одна функция не соответствует заданному имени и типу аргумента.Возможно, вам придется добавить явные приведения типов.Позиция: 15
Спасибо.