diff --git a/connectors/jdbc/pom.xml b/connectors/jdbc/pom.xml
index 114c6bfcc6..ba70049025 100644
--- a/connectors/jdbc/pom.xml
+++ b/connectors/jdbc/pom.xml
@@ -13,6 +13,10 @@
connector-jdbc
jar
+
+ 3.47.0
+
+
Camunda Self-Managed Free Edition license
@@ -36,7 +40,12 @@
org.jdbi
jdbi3-core
- 3.47.0
+ ${version.jdbi}
+
+
+ org.jdbi
+ jdbi3-jackson2
+ ${version.jdbi}
diff --git a/connectors/jdbc/src/main/java/io/camunda/connector/jdbc/model/client/JdbiJdbcClient.java b/connectors/jdbc/src/main/java/io/camunda/connector/jdbc/model/client/JdbiJdbcClient.java
index 5070dd5f82..9b1a9e5add 100644
--- a/connectors/jdbc/src/main/java/io/camunda/connector/jdbc/model/client/JdbiJdbcClient.java
+++ b/connectors/jdbc/src/main/java/io/camunda/connector/jdbc/model/client/JdbiJdbcClient.java
@@ -18,7 +18,9 @@
import java.util.Map;
import java.util.Objects;
import org.jdbi.v3.core.Jdbi;
+import org.jdbi.v3.core.statement.Query;
import org.jdbi.v3.core.statement.SqlStatement;
+import org.jdbi.v3.jackson2.Jackson2Plugin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,12 +42,24 @@ JdbcResponse internalExecuteRequest(JdbcRequestData data, Connection connection)
throws SQLException, IllegalAccessException {
JdbcResponse response;
Jdbi jdbi = Jdbi.create(connection);
+ jdbi.installPlugin(new Jackson2Plugin());
+ String databaseProductName =
+ jdbi.withHandle(
+ handle -> {
+ try {
+ return handle.getConnection().getMetaData().getDatabaseProductName();
+ } catch (SQLException e) {
+ LOG.error("Failed to retrieve database dialect", e);
+ return "Unknown";
+ }
+ });
+
if (data.returnResults()) {
// SELECT query, or RETURNING clause
LOG.debug("Executing query: {}", data.query());
+ Query q = jdbi.withHandle(handle -> bindVariables(handle.createQuery(data.query()), data));
List