diff --git a/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryExecution.java b/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryExecution.java index dd4b8365..a8309a82 100644 --- a/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryExecution.java +++ b/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryExecution.java @@ -83,7 +83,8 @@ interface R2dbcQueryExecution { ReturnedType returnedType = this.processor.getReturnedType(); - if (ClassUtils.isPrimitiveOrWrapper(returnedType.getReturnedType())) { + if (Void.class == returnedType.getReturnedType() + || ClassUtils.isPrimitiveOrWrapper(returnedType.getReturnedType())) { return source; } 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 c2c7d640..57a9ea5d 100644 --- a/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java @@ -41,13 +41,9 @@ import org.springframework.dao.DataAccessException; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.r2dbc.connectionfactory.R2dbcTransactionManager; -import org.springframework.data.r2dbc.convert.MappingR2dbcConverter; -import org.springframework.data.r2dbc.core.DefaultReactiveDataAccessStrategy; -import org.springframework.data.r2dbc.dialect.DialectResolver; -import org.springframework.data.r2dbc.dialect.R2dbcDialect; +import org.springframework.data.r2dbc.repository.query.Query; import org.springframework.data.r2dbc.repository.support.R2dbcRepositoryFactory; import org.springframework.data.r2dbc.testing.R2dbcIntegrationTestSupport; -import org.springframework.data.relational.core.mapping.RelationalMappingContext; import org.springframework.data.relational.core.mapping.Table; import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.reactive.ReactiveCrudRepository; @@ -172,8 +168,20 @@ public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcInteg } @Test - public void shouldInsertItemsTransactional() { + public void shouldDeleteUsingQueryMethod() { + shouldInsertNewItems(); + + repository.deleteAllByManual(12) // + .then().as(StepVerifier::create) // + .verifyComplete(); + + Map count = jdbc.queryForMap("SELECT count(*) AS count FROM legoset"); + assertThat(count).hasEntrySatisfying("count", numberOf(1)); + } + + @Test + public void shouldInsertItemsTransactional() { R2dbcTransactionManager r2dbcTransactionManager = new R2dbcTransactionManager(connectionFactory); TransactionalOperator rxtx = TransactionalOperator.create(r2dbcTransactionManager); @@ -184,7 +192,6 @@ public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcInteg Mono> transactional = repository.save(legoSet1) // .map(it -> jdbc.queryForMap("SELECT count(*) AS count FROM legoset")).as(rxtx::transactional); - Mono> nonTransactional = repository.save(legoSet2) // .map(it -> jdbc.queryForMap("SELECT count(*) AS count FROM legoset")); @@ -211,6 +218,9 @@ public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcInteg Mono findByManual(int manual); Flux findAllIds(); + + @Query("DELETE from legoset where manual = :manual") + Mono deleteAllByManual(int manual); } @Getter