From 92e77a47c9f3e0de40b7716e3fe20944fe112e56 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 16 Aug 2022 11:21:07 +0200 Subject: [PATCH] Retain element ordering in `AfterConvertCallback`s. We now use concatMap on result Fluxes to retain the object order. Previously, we used flatMap on a flux that has led to changes in element ordering. Closes #1307 --- .../springframework/data/r2dbc/core/R2dbcEntityTemplate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java index 788aa118b..d327042ca 100644 --- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java +++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java @@ -380,7 +380,7 @@ public class R2dbcEntityTemplate implements R2dbcEntityOperations, BeanFactoryAw return (P) ((Mono) result).flatMap(it -> maybeCallAfterConvert(it, tableName)); } - return (P) ((Flux) result).flatMap(it -> maybeCallAfterConvert(it, tableName)); + return (P) ((Flux) result).concatMap(it -> maybeCallAfterConvert(it, tableName)); } private RowsFetchSpec doSelect(Query query, Class entityClass, SqlIdentifier tableName, @@ -942,7 +942,7 @@ public class R2dbcEntityTemplate implements R2dbcEntityOperations, BeanFactoryAw @Override public Flux all() { - return delegate.all().flatMap(it -> maybeCallAfterConvert(it, tableName)); + return delegate.all().concatMap(it -> maybeCallAfterConvert(it, tableName)); } }