Я не могу сохранить именованные / неименованные соединения dblink в моем приложении springboot "java" (на самом деле kotlin). Я пишу свой код на котлине. Код выглядит так.
var result = jdbcTemplate.queryForObject<String>("SELECT dblink_connect('myTestConnectionName'," + myCloudServerConnectionString + ");")
println(result) // prints "OK" meaning that it ran okay I believe.
var result2 = jdbcTemplate.queryForObject<String>("SELECT dblink_get_connections();")
println(result2) // prints "null" meaning there are no dblink connections.
Я запускаю SQL вручную как в PSQL, так и в DBeaver, и он отлично работает. Я увижу названное соединение при запуске sql "dblink_get_connections". Это только не работает в моем приложении springboot.
Кто-нибудь знает, что я могу сделать, чтобы это исправить?
Для вызова dblink_connect()
требуется транзакция.
Ваш код открывает и сразу закрывает. dblink_get_connections
выполняется в другой транзакции.
Вы можете использовать @Transactional
в своем методе, чтобы изменить это поведение.
Что ж, я фактически закончил тем, что не использовал JDBCTemplate, а вместо этого использовал createStatement (). ExecuteQuery ("мой запрос sql") для переменной соединения. Это сработало!