From 87b23285fa2cb6bb08f689e363e201c399e380b8 Mon Sep 17 00:00:00 2001 From: wanggang3 Date: Tue, 11 Nov 2025 15:27:02 +0800 Subject: [PATCH 1/4] Improve transaction state detection logic --- .../spring/transaction/SpringManagedTransaction.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java b/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java index 1b6cd04832..b7f69539cc 100644 --- a/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java +++ b/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java @@ -73,13 +73,18 @@ public Connection getConnection() throws SQLException { * It also reads autocommit setting because when using Spring Transaction MyBatis thinks that autocommit is always * false and will always call commit/rollback so we need to no-op that calls. */ + private void openConnection() throws SQLException { + + boolean existingTransaction = TransactionSynchronizationManager.isActualTransactionActive(); + this.connection = DataSourceUtils.getConnection(this.dataSource); this.autoCommit = this.connection.getAutoCommit(); - this.isConnectionTransactional = DataSourceUtils.isConnectionTransactional(this.connection, this.dataSource); + + this.isConnectionTransactional = existingTransaction; LOGGER.debug(() -> "JDBC Connection [" + this.connection + "] will" - + (this.isConnectionTransactional ? " " : " not ") + "be managed by Spring"); + + (this.isConnectionTransactional ? " " : " not ") + "be managed by Spring"); } @Override From 6285590d9e73a24324b9a69395c6ddaad4b01aef Mon Sep 17 00:00:00 2001 From: wanggang3 Date: Wed, 12 Nov 2025 09:42:31 +0800 Subject: [PATCH 2/4] Test GPG signing --- test.txt | Bin 0 -> 12 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt diff --git a/test.txt b/test.txt new file mode 100644 index 0000000000000000000000000000000000000000..349d190f3dc5268aad7ce39e7dd68fdbc44703c5 GIT binary patch literal 12 TcmezWuY@6$p_rkBfr|kEBQOKV literal 0 HcmV?d00001 From 0426aa3182e49762330d640b30724d6fe6144b58 Mon Sep 17 00:00:00 2001 From: wanggang3 Date: Wed, 12 Nov 2025 09:43:12 +0800 Subject: [PATCH 3/4] Improve transaction state detection logic --- .../mybatis/spring/transaction/SpringManagedTransaction.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java b/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java index 1822145dff..3b6f6f9d22 100644 --- a/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java +++ b/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java @@ -71,7 +71,7 @@ public Connection getConnection() throws SQLException { * connection or let it to Spring. *

* It also reads autocommit setting because when using Spring Transaction MyBatis thinks that autocommit is always - * false and will always call commit/rollback so we need to no-op that calls. + * false and will always call commit/rollback so we need to no-op that calls.:q */ private void openConnection() throws SQLException { this.connection = DataSourceUtils.getConnection(this.dataSource); @@ -84,7 +84,6 @@ private void openConnection() throws SQLException { LOGGER.debug(() -> "JDBC Connection [" + this.connection + "] will" + (this.isConnectionTransactional ? " " : " not ") + "be managed by Spring"); } - @Override public void commit() throws SQLException { if (this.connection != null && !this.isConnectionTransactional && !this.autoCommit) { From 42304487c049294a3deedd4d2c0cbc86bfeca161 Mon Sep 17 00:00:00 2001 From: wanggang3 Date: Wed, 12 Nov 2025 15:23:37 +0800 Subject: [PATCH 4/4] Improve transaction state detection logic --- test.txt | Bin 12 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.txt diff --git a/test.txt b/test.txt deleted file mode 100644 index 349d190f3dc5268aad7ce39e7dd68fdbc44703c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 TcmezWuY@6$p_rkBfr|kEBQOKV