- что я хочу: мне нужно выполнить функцию SQL (очень большую) с помощью jakarta.persistence.Query.
- что я делаю:
Код: Выделить всё
@Transactional
public int executeRunFunctions() {
Query query = entityManager.createNativeQuery(loadQuery("/script4.sql"), Long.class);
System.out.println(query == null);
System.out.println("---- " + query.executeUpdate());
return 0;
}
- что я получаю:
Код: Выделить всё
org.hibernate.exception.GenericJDBCException: JDBC exception executing SQL [...my sql function..]
[ERROR: invalid transaction termination
Where: PL/pgSQL function inline_code_block line 113 at COMMIT] [n/a]
- что я пробую:
Я добавляю настройки:
Код: Выделить всё
spring.datasource.hikari.auto-commit=false
spring.jpa.properties.hibernate.connection.provider_disables_autocommit=true
Код: Выделить всё
Step failed
org.springframework.orm.jpa.JpaSystemException: Unable to commit against JDBC Connection
Без этих настроек мой SQL-скрипт (не функция) с удалением и созданием таблицы работает успешно.
В то время как с эти настройки действительно работали и с этой ошибкой («Невозможно зафиксировать соединение JDBC»).
Я использую несколько комбинаций этих настроек и делаю следующее:
Я оставил одну настройку 'spring.jpa.properties.hibernate.connection.provider_disables_autocommit=true' и окружите проблемный код в try-catch.
Помогите мне, пожалуйста, как мне это сделать правильно?
Подробнее здесь: https://stackoverflow.com/questions/792 ... mmit-error
Мобильная версия