Skip to content

Commit 3d4847a

Browse files
schaudermp911de
authored andcommitted
DATAJDBC-620 - The default RowMapper now gets passed to ResultSetConstructor.
Original pull request: #256.
1 parent 12ccf5b commit 3d4847a

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public StringBasedJdbcQuery(JdbcQueryMethod queryMethod, NamedParameterJdbcOpera
7777
RowMapper<Object> rowMapper = determineRowMapper(defaultRowMapper);
7878
return getQueryExecution( //
7979
queryMethod, //
80-
determineResultSetExtractor(rowMapper != defaultRowMapper ? rowMapper : null), //
80+
determineResultSetExtractor(rowMapper), //
8181
rowMapper //
8282
);});
8383
}

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/StringBasedJdbcQueryMappingConfigurationIntegrationTests.java

+29
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.springframework.context.annotation.Import;
3535
import org.springframework.dao.DataAccessException;
3636
import org.springframework.data.annotation.Id;
37+
import org.springframework.data.jdbc.core.convert.EntityRowMapper;
3738
import org.springframework.data.jdbc.repository.config.DefaultQueryMappingConfiguration;
3839
import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories;
3940
import org.springframework.data.jdbc.repository.query.Query;
@@ -134,6 +135,20 @@ public List<Car> extractData(ResultSet rs) throws SQLException, DataAccessExcept
134135
}
135136
}
136137

138+
public static class RowMapperResultSetExtractor implements ResultSetExtractor<RowMapper> {
139+
140+
final RowMapper rowMapper;
141+
142+
public RowMapperResultSetExtractor(RowMapper rowMapper) {
143+
this.rowMapper = rowMapper;
144+
}
145+
146+
@Override
147+
public RowMapper extractData(ResultSet rs) throws SQLException, DataAccessException {
148+
return rowMapper;
149+
}
150+
}
151+
137152
interface CarRepository extends CrudRepository<Car, Long> {
138153

139154
@Query(value = "select * from car", resultSetExtractorClass = CarResultSetExtractor.class)
@@ -144,6 +159,11 @@ interface CarRepository extends CrudRepository<Car, Long> {
144159

145160
@Query(value = "select model from car", rowMapperRef = "CustomRowMapperBean")
146161
List<String> findByNameWithRowMapperBean();
162+
163+
164+
@Query(value = "select * from car", resultSetExtractorClass = RowMapperResultSetExtractor.class)
165+
RowMapper customFindAllWithRowMapper();
166+
147167
}
148168

149169
@Autowired NamedParameterJdbcTemplate template;
@@ -179,4 +199,13 @@ public void customFindWithResultSetExtractorBeanSupportingInjection() {
179199
assertThat(cars).allMatch(car -> VALUE_PROCESSED_BY_SERVICE.equals(car.getModel()));
180200
}
181201

202+
@Test // DATAJDBC-620
203+
void defaultRowMapperGetsInjectedIntoCustomResultSetExtractor() {
204+
205+
RowMapper rowMapper = carRepository.customFindAllWithRowMapper();
206+
207+
assertThat(rowMapper).isNotNull();
208+
}
209+
210+
182211
}

0 commit comments

Comments
 (0)