From dd2d94e2bd83d947aed0cb9b37e87837174cb785 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 16 Aug 2022 11:19:44 +0200 Subject: [PATCH] Retain element ordering in entity callbacks. 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 #777 --- .../springframework/data/r2dbc/core/R2dbcEntityTemplate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java b/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java index 8b460f5..aa6c5b3 100644 --- a/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java +++ b/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java @@ -409,7 +409,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, @@ -1114,7 +1114,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)); } }