首页 > 解决方案 > 如何让 PostgreSQL DBLink 连接与 JDBC 一起使用?

问题描述

我无法让命名/未命名的 dblink 连接持续存在于我的 springboot“java”(实际上是 kotlin)应用程序中。我正在用 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.

我在 PSQL 和 DBeaver 中手动运行 SQL,它工作正常。当我运行“dblink_get_connections”sql 时,我将看到命名连接。它仅在我的 springboot 应用程序中不起作用。

有谁知道我能做些什么来修复它?

标签: postgresqlspring-bootjdbckotlindblink

解决方案


调用dblink_connect()需要一个事务。
您的代码打开并立即关闭它。dblink_get_connections在另一个事务中执行。
您可以使用@Transactional您的方法来更改此行为。


推荐阅读