34
34
import org .springframework .context .annotation .Import ;
35
35
import org .springframework .dao .DataAccessException ;
36
36
import org .springframework .data .annotation .Id ;
37
+ import org .springframework .data .jdbc .core .convert .EntityRowMapper ;
37
38
import org .springframework .data .jdbc .repository .config .DefaultQueryMappingConfiguration ;
38
39
import org .springframework .data .jdbc .repository .config .EnableJdbcRepositories ;
39
40
import org .springframework .data .jdbc .repository .query .Query ;
@@ -134,6 +135,20 @@ public List<Car> extractData(ResultSet rs) throws SQLException, DataAccessExcept
134
135
}
135
136
}
136
137
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
+
137
152
interface CarRepository extends CrudRepository <Car , Long > {
138
153
139
154
@ Query (value = "select * from car" , resultSetExtractorClass = CarResultSetExtractor .class )
@@ -144,6 +159,11 @@ interface CarRepository extends CrudRepository<Car, Long> {
144
159
145
160
@ Query (value = "select model from car" , rowMapperRef = "CustomRowMapperBean" )
146
161
List <String > findByNameWithRowMapperBean ();
162
+
163
+
164
+ @ Query (value = "select * from car" , resultSetExtractorClass = RowMapperResultSetExtractor .class )
165
+ RowMapper customFindAllWithRowMapper ();
166
+
147
167
}
148
168
149
169
@ Autowired NamedParameterJdbcTemplate template ;
@@ -179,4 +199,13 @@ public void customFindWithResultSetExtractorBeanSupportingInjection() {
179
199
assertThat (cars ).allMatch (car -> VALUE_PROCESSED_BY_SERVICE .equals (car .getModel ()));
180
200
}
181
201
202
+ @ Test // DATAJDBC-620
203
+ void defaultRowMapperGetsInjectedIntoCustomResultSetExtractor () {
204
+
205
+ RowMapper rowMapper = carRepository .customFindAllWithRowMapper ();
206
+
207
+ assertThat (rowMapper ).isNotNull ();
208
+ }
209
+
210
+
182
211
}
0 commit comments