From 5ef424120ed694b1f69daeafaa1454455d13dee2 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Wed, 31 Jan 2024 16:50:01 +0300 Subject: CI: enable SQLite * SQLite JDBC driver does not support generated keys feature. So we implement `returningId` helper * only one connection should be used from connection pooler * changes made to prevent connection locking --- src/main/java/com/juick/service/BaseJdbcService.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/main/java/com/juick/service/BaseJdbcService.java') diff --git a/src/main/java/com/juick/service/BaseJdbcService.java b/src/main/java/com/juick/service/BaseJdbcService.java index d16dadd2..b51cbdc7 100644 --- a/src/main/java/com/juick/service/BaseJdbcService.java +++ b/src/main/java/com/juick/service/BaseJdbcService.java @@ -52,6 +52,11 @@ public class BaseJdbcService { @Value("#{new Boolean('${spring.sql.init.platform}' == 'mysql')}") private boolean haveNoOffsetDateTime; + @Value("#{new Boolean('${spring.sql.init.platform}' == 'sqlserver')}") + private boolean haveOutput; + @Value("#{new Boolean('${spring.sql.init.platform}' == 'h2')}") + private boolean haveDeltaTables; + public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() { return namedParameterJdbcTemplate; } @@ -124,4 +129,13 @@ public class BaseJdbcService { } return Types.TIMESTAMP_WITH_TIMEZONE; } + public String returningId(String insertClause, String valuesClause, String idColumn) { + if (haveOutput) { + return insertClause + " OUTPUT inserted."+ idColumn + " " + valuesClause; + } + if (haveDeltaTables) { + return "SELECT " + idColumn + " FROM FINAL TABLE (" + insertClause + " " + valuesClause + ")"; + } + return insertClause + " " + valuesClause + " RETURNING " + idColumn; + } } -- cgit v1.2.3