From 15c64a4ee125600d1f582a691b225fb9bb729633 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Mon, 11 May 2020 11:27:33 +0200 Subject: [PATCH] #363 - Polishing. Added an integration test and tweaked the conversions to make it succeed. The converter now does not rely on the driver to do the conversion anymore. Original pull request: #360. --- .../data/r2dbc/convert/R2dbcConverters.java | 2 +- .../AbstractR2dbcRepositoryIntegrationTests.java | 14 ++++++++++++++ .../query/PartTreeR2dbcQueryUnitTests.java | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/r2dbc/convert/R2dbcConverters.java b/src/main/java/org/springframework/data/r2dbc/convert/R2dbcConverters.java index fb4d5d3f..aa2e09d1 100644 --- a/src/main/java/org/springframework/data/r2dbc/convert/R2dbcConverters.java +++ b/src/main/java/org/springframework/data/r2dbc/convert/R2dbcConverters.java @@ -186,7 +186,7 @@ abstract class R2dbcConverters { @Override public T convert(Row source) { - Object object = source.get(0, targetType); + Object object = source.get(0); return (object != null ? NumberUtils.convertNumberToTargetClass((Number) object, this.targetType) : null); } diff --git a/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java index c6a2f708..81b64329 100644 --- a/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java @@ -285,6 +285,18 @@ public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcInteg assertThat(count).hasEntrySatisfying("count", numberOf(2)); } + @Test // gh-363 + public void derivedQueryWithCountProjection() { + + shouldInsertNewItems(); + + repository.countByNameContains("SCH") // + .as(StepVerifier::create) // + .assertNext(i -> assertThat(i).isEqualTo(2)) + .verifyComplete(); + + } + private Condition numberOf(int expected) { return new Condition<>(it -> { return it instanceof Number && ((Number) it).intValue() == expected; @@ -312,6 +324,8 @@ public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcInteg @Query("DELETE from legoset where manual = :manual") Mono deleteAllByManual(int manual); + + Mono countByNameContains(String namePart); } @Getter diff --git a/src/test/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQueryUnitTests.java b/src/test/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQueryUnitTests.java index f6ab7774..3159d349 100644 --- a/src/test/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQueryUnitTests.java +++ b/src/test/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQueryUnitTests.java @@ -619,7 +619,7 @@ public class PartTreeR2dbcQueryUnitTests { + ".foo FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1"); } - @Test // DATAJDBC-534 + @Test // gh-363 public void createsQueryForCountProjection() throws Exception { R2dbcQueryMethod queryMethod = getQueryMethod("countByFirstName", String.class);