From d442fca38dbaa9eb91819faf4ac11e40b84fb5bb Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Thu, 28 Nov 2019 14:24:42 +0100 Subject: [PATCH] #235 - Polishing. Added test and tweaked documentation to clarify that other numeric types beyond `Integer` are admissible. Split a test in order to have meaningful test names. Original pull request: #238. --- src/main/asciidoc/reference/r2dbc-repositories.adoc | 6 +++--- .../H2R2dbcRepositoryIntegrationTests.java | 12 ++++++++++++ .../repository/query/R2dbcQueryMethodUnitTests.java | 9 ++++++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/asciidoc/reference/r2dbc-repositories.adoc b/src/main/asciidoc/reference/r2dbc-repositories.adoc index c1c3738bf..e33cb9452 100644 --- a/src/main/asciidoc/reference/r2dbc-repositories.adoc +++ b/src/main/asciidoc/reference/r2dbc-repositories.adoc @@ -142,9 +142,9 @@ Mono setFixedFirstnameFor(String firstname, String lastname); The result of a modifying query can be: -* `Void` to discard update count and await completion -* `Integer` emitting the affected rows count -* `Boolean` to emit whether at least one row was updated +* `Void` to discard update count and await completion. +* `Integer` or another numeric type emitting the affected rows count. +* `Boolean` to emit whether at least one row was updated. The `@Modifying` annotation is only relevant in combination with the `@Query` annotation. Derived custom methods do not require this annotation. diff --git a/src/test/java/org/springframework/data/r2dbc/repository/H2R2dbcRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/r2dbc/repository/H2R2dbcRepositoryIntegrationTests.java index 0653183fc..5f1f17169 100644 --- a/src/test/java/org/springframework/data/r2dbc/repository/H2R2dbcRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/r2dbc/repository/H2R2dbcRepositoryIntegrationTests.java @@ -89,6 +89,14 @@ public class H2R2dbcRepositoryIntegrationTests extends AbstractR2dbcRepositoryIn repository.updateManual(42).as(StepVerifier::create).expectNext(2L).verifyComplete(); } + @Test // gh-235 + public void shouldReturnUpdateCountAsDouble() { + + shouldInsertNewItems(); + + repository.updateManualAndReturnDouble(42).as(StepVerifier::create).expectNext(2.0).verifyComplete(); + } + @Test // gh-235 public void shouldReturnUpdateSuccess() { @@ -134,5 +142,9 @@ public class H2R2dbcRepositoryIntegrationTests extends AbstractR2dbcRepositoryIn @Query("UPDATE legoset set manual = :manual") @Modifying Mono updateManualAndReturnNothing(int manual); + + @Query("UPDATE legoset set manual = :manual") + @Modifying + Mono updateManualAndReturnDouble(int manual); } } diff --git a/src/test/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryMethodUnitTests.java b/src/test/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryMethodUnitTests.java index ed7713740..5047f0e01 100644 --- a/src/test/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryMethodUnitTests.java +++ b/src/test/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryMethodUnitTests.java @@ -72,6 +72,14 @@ public class R2dbcQueryMethodUnitTests { } @Test // gh-235 + public void detectsNotModifyingQuery() throws Exception { + + R2dbcQueryMethod queryMethod = queryMethod(SampleRepository.class, "differentTable"); + + assertThat(queryMethod.isModifyingQuery()).isFalse(); + } + + @Test public void detectsTableNameFromRepoTypeIfReturnTypeNotAssignable() throws Exception { R2dbcQueryMethod queryMethod = queryMethod(SampleRepository.class, "differentTable"); @@ -79,7 +87,6 @@ public class R2dbcQueryMethodUnitTests { assertThat(metadata.getJavaType()).isAssignableFrom(Address.class); assertThat(metadata.getTableName()).isEqualTo("contact"); - assertThat(queryMethod.isModifyingQuery()).isFalse(); } @Test(expected = IllegalArgumentException.class)