diff --git a/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java b/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java index ad04e62d1d..9b5b28934c 100644 --- a/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java +++ b/src/main/java/org/mybatis/spring/transaction/SpringManagedTransaction.java @@ -82,10 +82,13 @@ public Connection getConnection() throws SQLException { private void openConnection() throws SQLException { this.connection = DataSourceUtils.getConnection(this.dataSource); this.autoCommit = this.connection.getAutoCommit(); - this.isConnectionTransactional = DataSourceUtils.isConnectionTransactional(this.connection, this.dataSource); + + boolean isInActiveTransaction = TransactionSynchronizationManager.isActualTransactionActive(); + this.isConnectionTransactional = isInActiveTransaction && + DataSourceUtils.isConnectionTransactional(this.connection, this.dataSource); LOGGER.debug(() -> "JDBC Connection [" + this.connection + "] will" - + (this.isConnectionTransactional ? " " : " not ") + "be managed by Spring"); + + (this.isConnectionTransactional ? " " : " not ") + "be managed by Spring"); } @Override