Skip to content

Commit 494f663

Browse files
committed
GH-2169 - Remove blocking call from ReactiveNeo4jTemplate.
1 parent 210f209 commit 494f663

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/main/java/org/springframework/data/neo4j/core/ReactiveNeo4jTemplate.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -726,14 +726,19 @@ public <T> Mono<ExecutableQuery<T>> toExecutableQuery(PreparedQuery<T> preparedQ
726726
Map<String, Object> parameters = queryFragmentsAndParameters.getParameters();
727727

728728
if (containsPossibleCircles && !queryFragments.isScalarValueReturn()) {
729-
GenericQueryAndParameters genericQueryAndParameters =
730-
createQueryAndParameters(entityMetaData, queryFragments, parameters).block();
729+
return createQueryAndParameters(entityMetaData, queryFragments, parameters)
730+
.map(genericQueryAndParameters -> {
731+
ReactiveNeo4jClient.MappingSpec<T> mappingSpec = this.neo4jClient.query(renderer.render(GenericQueryAndParameters.STATEMENT))
732+
.bindAll(genericQueryAndParameters.getParameters()).fetchAs(resultType);
731733

732-
cypherQuery = renderer.render(GenericQueryAndParameters.STATEMENT);
733-
finalParameters = genericQueryAndParameters.getParameters();
734-
} else {
735-
cypherQuery = renderer.render(queryFragments.toStatement());
734+
ReactiveNeo4jClient.RecordFetchSpec<T> fetchSpec = preparedQuery.getOptionalMappingFunction()
735+
.map(mappingFunction -> mappingSpec.mappedBy(mappingFunction)).orElse(mappingSpec);
736+
737+
return new DefaultReactiveExecutableQuery<>(preparedQuery, fetchSpec);
738+
});
736739
}
740+
741+
cypherQuery = renderer.render(queryFragments.toStatement());
737742
}
738743

739744
ReactiveNeo4jClient.MappingSpec<T> mappingSpec = this.neo4jClient.query(cypherQuery)

0 commit comments

Comments
 (0)