diff --git a/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java b/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java index 06cba9e53..523d2e632 100644 --- a/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java +++ b/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java @@ -189,6 +189,7 @@ class DefaultNeo4jClient implements Neo4jClient { private String targetDatabase; DefaultRunnableSpec(Supplier cypherSupplier) { + this.targetDatabase = Neo4jClient.verifyDatabaseName(resolveTargetDatabaseName(targetDatabase)); this.runnableStatement = new RunnableStatement(cypherSupplier); } @@ -257,6 +258,19 @@ class DefaultNeo4jClient implements Neo4jClient { throw potentiallyConvertRuntimeException(e, persistenceExceptionTranslator); } } + + private String resolveTargetDatabaseName(@Nullable String parameterTargetDatabase) { + if (parameterTargetDatabase != null) { + return parameterTargetDatabase; + } + if (databaseSelectionProvider != null) { + String databaseSelectionProviderValue = databaseSelectionProvider.getDatabaseSelection().getValue(); + if (databaseSelectionProviderValue != null) { + return databaseSelectionProviderValue; + } + } + return DatabaseSelectionProvider.getDefaultSelectionProvider().getDatabaseSelection().getValue(); + } } class DefaultRecordFetchSpec implements RecordFetchSpec, MappingSpec { @@ -270,24 +284,11 @@ class DefaultNeo4jClient implements Neo4jClient { DefaultRecordFetchSpec(String parameterTargetDatabase, RunnableStatement runnableStatement, BiFunction mappingFunction) { - this.targetDatabase = resolveTargetDatabaseName(parameterTargetDatabase); + this.targetDatabase = parameterTargetDatabase; this.runnableStatement = runnableStatement; this.mappingFunction = mappingFunction; } - private String resolveTargetDatabaseName(@Nullable String parameterTargetDatabase) { - if (parameterTargetDatabase != null) { - return parameterTargetDatabase; - } - if (databaseSelectionProvider != null) { - String databaseSelectionProviderValue = databaseSelectionProvider.getDatabaseSelection().getValue(); - if (databaseSelectionProviderValue != null) { - return databaseSelectionProviderValue; - } - } - return DatabaseSelectionProvider.getDefaultSelectionProvider().getDatabaseSelection().getValue(); - } - @Override public RecordFetchSpec mappedBy( @SuppressWarnings("HiddenField") BiFunction mappingFunction) { @@ -358,7 +359,7 @@ class DefaultNeo4jClient implements Neo4jClient { DefaultRunnableDelegation(Function> callback, @Nullable String targetDatabase) { this.callback = callback; - this.targetDatabase = targetDatabase; + this.targetDatabase = Neo4jClient.verifyDatabaseName(targetDatabase); } @Override @@ -375,4 +376,5 @@ class DefaultNeo4jClient implements Neo4jClient { } } } + } diff --git a/src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java b/src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java index 5c546ca78..98f2a9dae 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java +++ b/src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java @@ -4285,7 +4285,7 @@ class RepositoryIT { } @Bean - public DatabaseSelectionProvider databaseNameProvider() { + public DatabaseSelectionProvider databaseSelectionProvider() { return () -> databaseSelection; } }