3434import org .springframework .context .annotation .Import ;
3535import org .springframework .dao .DataAccessException ;
3636import org .springframework .data .annotation .Id ;
37+ import org .springframework .data .jdbc .core .convert .EntityRowMapper ;
3738import org .springframework .data .jdbc .repository .config .DefaultQueryMappingConfiguration ;
3839import org .springframework .data .jdbc .repository .config .EnableJdbcRepositories ;
3940import 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