diff --git a/pom.xml b/pom.xml index b230bbb69e..3729c2d643 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-relational-parent - 2.2.0-SNAPSHOT + 2.2.0-DATAJDBC-620-SNAPSHOT pom Spring Data Relational Parent diff --git a/spring-data-jdbc-distribution/pom.xml b/spring-data-jdbc-distribution/pom.xml index a922ef00a2..d3b59be399 100644 --- a/spring-data-jdbc-distribution/pom.xml +++ b/spring-data-jdbc-distribution/pom.xml @@ -14,7 +14,7 @@ org.springframework.data spring-data-relational-parent - 2.2.0-SNAPSHOT + 2.2.0-DATAJDBC-620-SNAPSHOT ../pom.xml diff --git a/spring-data-jdbc/pom.xml b/spring-data-jdbc/pom.xml index 6f04d6b4b0..5d2d09508b 100644 --- a/spring-data-jdbc/pom.xml +++ b/spring-data-jdbc/pom.xml @@ -6,7 +6,7 @@ 4.0.0 spring-data-jdbc - 2.2.0-SNAPSHOT + 2.2.0-DATAJDBC-620-SNAPSHOT Spring Data JDBC Spring Data module for JDBC repositories. @@ -15,7 +15,7 @@ org.springframework.data spring-data-relational-parent - 2.2.0-SNAPSHOT + 2.2.0-DATAJDBC-620-SNAPSHOT diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java index b5ef83bc21..40ce676433 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java @@ -77,7 +77,7 @@ public StringBasedJdbcQuery(JdbcQueryMethod queryMethod, NamedParameterJdbcOpera RowMapper rowMapper = determineRowMapper(defaultRowMapper); return getQueryExecution( // queryMethod, // - determineResultSetExtractor(rowMapper != defaultRowMapper ? rowMapper : null), // + determineResultSetExtractor(rowMapper), // rowMapper // );}); } diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/StringBasedJdbcQueryMappingConfigurationIntegrationTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/StringBasedJdbcQueryMappingConfigurationIntegrationTests.java index 726ecc8b19..de9456fb08 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/StringBasedJdbcQueryMappingConfigurationIntegrationTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/StringBasedJdbcQueryMappingConfigurationIntegrationTests.java @@ -34,6 +34,7 @@ import org.springframework.context.annotation.Import; import org.springframework.dao.DataAccessException; import org.springframework.data.annotation.Id; +import org.springframework.data.jdbc.core.convert.EntityRowMapper; import org.springframework.data.jdbc.repository.config.DefaultQueryMappingConfiguration; import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories; import org.springframework.data.jdbc.repository.query.Query; @@ -134,6 +135,20 @@ public List extractData(ResultSet rs) throws SQLException, DataAccessExcept } } + public static class RowMapperResultSetExtractor implements ResultSetExtractor { + + final RowMapper rowMapper; + + public RowMapperResultSetExtractor(RowMapper rowMapper) { + this.rowMapper = rowMapper; + } + + @Override + public RowMapper extractData(ResultSet rs) throws SQLException, DataAccessException { + return rowMapper; + } + } + interface CarRepository extends CrudRepository { @Query(value = "select * from car", resultSetExtractorClass = CarResultSetExtractor.class) @@ -144,13 +159,18 @@ interface CarRepository extends CrudRepository { @Query(value = "select model from car", rowMapperRef = "CustomRowMapperBean") List findByNameWithRowMapperBean(); + + + @Query(value = "select * from car", resultSetExtractorClass = RowMapperResultSetExtractor.class) + RowMapper customFindAllWithRowMapper(); + } @Autowired NamedParameterJdbcTemplate template; @Autowired CarRepository carRepository; @Test // DATAJDBC-290 - public void customFindAllCarsUsesConfiguredResultSetExtractor() { + void customFindAllCarsUsesConfiguredResultSetExtractor() { carRepository.save(new Car(null, "Some model")); Iterable cars = carRepository.customFindAll(); @@ -160,7 +180,7 @@ public void customFindAllCarsUsesConfiguredResultSetExtractor() { } @Test // DATAJDBC-430 - public void customFindWithRowMapperBeanSupportingInjection() { + void customFindWithRowMapperBeanSupportingInjection() { carRepository.save(new Car(null, "Some model")); List names = carRepository.findByNameWithRowMapperBean(); @@ -170,7 +190,7 @@ public void customFindWithRowMapperBeanSupportingInjection() { } @Test // DATAJDBC-430 - public void customFindWithResultSetExtractorBeanSupportingInjection() { + void customFindWithResultSetExtractorBeanSupportingInjection() { carRepository.save(new Car(null, "Some model")); Iterable cars = carRepository.findByNameWithResultSetExtractor(); @@ -179,4 +199,11 @@ public void customFindWithResultSetExtractorBeanSupportingInjection() { assertThat(cars).allMatch(car -> VALUE_PROCESSED_BY_SERVICE.equals(car.getModel())); } + @Test // DATAJDBC-620 + void defaultRowMapperGetsInjectedIntoCustomResultSetExtractor() { + + RowMapper rowMapper = carRepository.customFindAllWithRowMapper(); + + assertThat(rowMapper).isNotNull(); + } } diff --git a/spring-data-relational/pom.xml b/spring-data-relational/pom.xml index 6b2507aabe..43e13101e3 100644 --- a/spring-data-relational/pom.xml +++ b/spring-data-relational/pom.xml @@ -6,7 +6,7 @@ 4.0.0 spring-data-relational - 2.2.0-SNAPSHOT + 2.2.0-DATAJDBC-620-SNAPSHOT Spring Data Relational Spring Data Relational support @@ -14,7 +14,7 @@ org.springframework.data spring-data-relational-parent - 2.2.0-SNAPSHOT + 2.2.0-DATAJDBC-620-SNAPSHOT