@@ -730,7 +730,7 @@ private Mono<DatabaseSelection> getDatabaseName() {
730
730
@ Override
731
731
public <T > Mono <ExecutableQuery <T >> toExecutableQuery (PreparedQuery <T > preparedQuery ) {
732
732
733
- return getDatabaseName ().map (databaseName -> {
733
+ return getDatabaseName ().flatMap (databaseName -> {
734
734
Class <T > resultType = preparedQuery .getResultType ();
735
735
QueryFragmentsAndParameters queryFragmentsAndParameters = preparedQuery .getQueryFragmentsAndParameters ();
736
736
String cypherQuery = queryFragmentsAndParameters .getCypherQuery ();
@@ -745,14 +745,19 @@ public <T> Mono<ExecutableQuery<T>> toExecutableQuery(PreparedQuery<T> preparedQ
745
745
Map <String , Object > parameters = queryFragmentsAndParameters .getParameters ();
746
746
747
747
if (containsPossibleCircles && !queryFragments .isScalarValueReturn ()) {
748
- GenericQueryAndParameters genericQueryAndParameters =
749
- createQueryAndParameters (entityMetaData , queryFragments , parameters ).block ();
748
+ return createQueryAndParameters (entityMetaData , queryFragments , parameters )
749
+ .map (genericQueryAndParameters -> {
750
+ ReactiveNeo4jClient .MappingSpec <T > mappingSpec = this .neo4jClient .query (renderer .render (GenericQueryAndParameters .STATEMENT ))
751
+ .in (databaseName .getValue ()).bindAll (genericQueryAndParameters .getParameters ()).fetchAs (resultType );
750
752
751
- cypherQuery = renderer .render (GenericQueryAndParameters .STATEMENT );
752
- finalParameters = genericQueryAndParameters .getParameters ();
753
- } else {
754
- cypherQuery = renderer .render (queryFragments .toStatement ());
753
+ ReactiveNeo4jClient .RecordFetchSpec <T > fetchSpec = preparedQuery .getOptionalMappingFunction ()
754
+ .map (mappingFunction -> mappingSpec .mappedBy (mappingFunction )).orElse (mappingSpec );
755
+
756
+ return new DefaultReactiveExecutableQuery <>(preparedQuery , fetchSpec );
757
+ });
755
758
}
759
+
760
+ cypherQuery = renderer .render (queryFragments .toStatement ());
756
761
}
757
762
758
763
ReactiveNeo4jClient .MappingSpec <T > mappingSpec = this .neo4jClient .query (cypherQuery )
@@ -761,7 +766,7 @@ public <T> Mono<ExecutableQuery<T>> toExecutableQuery(PreparedQuery<T> preparedQ
761
766
ReactiveNeo4jClient .RecordFetchSpec <T > fetchSpec = preparedQuery .getOptionalMappingFunction ()
762
767
.map (mappingFunction -> mappingSpec .mappedBy (mappingFunction )).orElse (mappingSpec );
763
768
764
- return new DefaultReactiveExecutableQuery <>(preparedQuery , fetchSpec );
769
+ return Mono . just ( new DefaultReactiveExecutableQuery <>(preparedQuery , fetchSpec ) );
765
770
});
766
771
}
767
772
0 commit comments