diff --git a/data-providers/jdbc-data-provider/src/main/java/datart/data/provider/JdbcDataProvider.java b/data-providers/jdbc-data-provider/src/main/java/datart/data/provider/JdbcDataProvider.java index 4d979644b..5e7a435bc 100644 --- a/data-providers/jdbc-data-provider/src/main/java/datart/data/provider/JdbcDataProvider.java +++ b/data-providers/jdbc-data-provider/src/main/java/datart/data/provider/JdbcDataProvider.java @@ -143,11 +143,15 @@ private JdbcProperties conv2JdbcProperties(DataProviderSource config) { private JdbcDataProviderAdapter matchProviderAdapter(DataProviderSource source) { JdbcDataProviderAdapter adapter; adapter = cachedProviders.get(source.getSourceId()); - if (adapter != null) { - return adapter; + JdbcProperties newJdbcProperties = conv2JdbcProperties(source); + boolean needCreateNewDataProvider = (adapter == null || !Objects.equals(adapter.getJdbcProperties(), newJdbcProperties)); + if (needCreateNewDataProvider) { + if (adapter != null) { + resetSource(source); + } + adapter = ProviderFactory.createDataProvider(newJdbcProperties, true); + cachedProviders.put(source.getSourceId(), adapter); } - adapter = ProviderFactory.createDataProvider(conv2JdbcProperties(source), true); - cachedProviders.put(source.getSourceId(), adapter); return adapter; }