From 16e99f289c53185b31b0f3e75ace206181794bc7 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 28 Jul 2025 22:04:18 +0200 Subject: [PATCH] Accept support for generated keys column name array on HSQLDB/Derby Closes gh-34790 --- .../GenericTableMetaDataProvider.java | 41 +------------------ 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java index a694b7500fe..56701af1e24 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java @@ -21,7 +21,6 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -48,11 +47,6 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { /** Logger available to subclasses. */ protected static final Log logger = LogFactory.getLog(TableMetaDataProvider.class); - /** Database products we know not supporting the use of a String[] for generated keys. */ - private static final List productsNotSupportingGeneratedKeysColumnNameArray = - Arrays.asList("Apache Derby", "HSQL Database Engine"); - - /** The name of the user currently connected. */ @Nullable private final String userName; @@ -95,45 +89,14 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { @Override public void initializeWithMetaData(DatabaseMetaData databaseMetaData) throws SQLException { try { - if (databaseMetaData.supportsGetGeneratedKeys()) { - logger.debug("GetGeneratedKeys is supported"); - setGetGeneratedKeysSupported(true); - } - else { - logger.debug("GetGeneratedKeys is not supported"); - setGetGeneratedKeysSupported(false); - } + setGetGeneratedKeysSupported(databaseMetaData.supportsGetGeneratedKeys()); + setGeneratedKeysColumnNameArraySupported(isGetGeneratedKeysSupported()); } catch (SQLException ex) { if (logger.isWarnEnabled()) { logger.warn("Error retrieving 'DatabaseMetaData.supportsGetGeneratedKeys': " + ex.getMessage()); } } - try { - String databaseProductName = databaseMetaData.getDatabaseProductName(); - if (productsNotSupportingGeneratedKeysColumnNameArray.contains(databaseProductName)) { - if (logger.isDebugEnabled()) { - logger.debug("GeneratedKeysColumnNameArray is not supported for " + databaseProductName); - } - setGeneratedKeysColumnNameArraySupported(false); - } - else { - if (isGetGeneratedKeysSupported()) { - if (logger.isDebugEnabled()) { - logger.debug("GeneratedKeysColumnNameArray is supported for " + databaseProductName); - } - setGeneratedKeysColumnNameArraySupported(true); - } - else { - setGeneratedKeysColumnNameArraySupported(false); - } - } - } - catch (SQLException ex) { - if (logger.isWarnEnabled()) { - logger.warn("Error retrieving 'DatabaseMetaData.getDatabaseProductName': " + ex.getMessage()); - } - } try { this.databaseVersion = databaseMetaData.getDatabaseProductVersion();