From 91ee1365a849daed5276cd6e9c47b96420236fe8 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 9 Mar 2021 16:08:17 +0100 Subject: [PATCH] Fully consume insert response. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit R2dbcEntityTemplate.insert(…) now fully consumes the response from the INSERT call before continuing. Previously, we consumed only the first signal and continued then. A driver could emit a row and then an error signal and so the error signal would go unnoticed. Closes #552. --- .../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 261858d9..3cc48ba4 100644 --- a/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java +++ b/src/main/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplate.java @@ -568,8 +568,8 @@ private Mono doInsert(T entity, SqlIdentifier tableName, OutboundRow outb return this.databaseClient.sql(operation) // .filter(statement -> statement.returnGeneratedValues()) .map(this.dataAccessStrategy.getConverter().populateIdIfNecessary(entity)) // - .first() // - .defaultIfEmpty(entity) // + .all() // + .last(entity) .flatMap(saved -> maybeCallAfterSave(saved, outboundRow, tableName)); }