44
44
import org .springframework .data .relational .core .mapping .RelationalPersistentEntity ;
45
45
import org .springframework .data .relational .core .mapping .RelationalPersistentProperty ;
46
46
import org .springframework .data .relational .core .sql .Functions ;
47
+ import org .springframework .data .relational .core .sql .SqlIdentifier ;
47
48
import org .springframework .data .util .ProxyUtils ;
48
49
import org .springframework .util .Assert ;
49
50
@@ -174,7 +175,7 @@ public Mono<Long> count(Query query, Class<?> entityClass) throws DataAccessExce
174
175
return doCount (query , entityClass , getTableName (entityClass ));
175
176
}
176
177
177
- Mono <Long > doCount (Query query , Class <?> entityClass , String tableName ) {
178
+ Mono <Long > doCount (Query query , Class <?> entityClass , SqlIdentifier tableName ) {
178
179
179
180
RelationalPersistentEntity <?> entity = getRequiredEntity (entityClass );
180
181
StatementMapper statementMapper = dataAccessStrategy .getStatementMapper ().forType (entityClass );
@@ -211,12 +212,13 @@ public Mono<Boolean> exists(Query query, Class<?> entityClass) throws DataAccess
211
212
return doExists (query , entityClass , getTableName (entityClass ));
212
213
}
213
214
214
- Mono <Boolean > doExists (Query query , Class <?> entityClass , String tableName ) {
215
+ Mono <Boolean > doExists (Query query , Class <?> entityClass , SqlIdentifier tableName ) {
215
216
216
217
RelationalPersistentEntity <?> entity = getRequiredEntity (entityClass );
217
218
StatementMapper statementMapper = dataAccessStrategy .getStatementMapper ().forType (entityClass );
218
219
219
- String columnName = entity .hasIdProperty () ? entity .getRequiredIdProperty ().getColumnName () : "*" ;
220
+ SqlIdentifier columnName = entity .hasIdProperty () ? entity .getRequiredIdProperty ().getColumnName ()
221
+ : SqlIdentifier .unquoted ("*" );
220
222
221
223
StatementMapper .SelectSpec selectSpec = statementMapper //
222
224
.createSelect (tableName ) //
@@ -248,7 +250,7 @@ public <T> Flux<T> select(Query query, Class<T> entityClass) throws DataAccessEx
248
250
return doSelect (query , entityClass , getTableName (entityClass ), entityClass ).all ();
249
251
}
250
252
251
- <T > RowsFetchSpec <T > doSelect (Query query , Class <?> entityClass , String tableName , Class <T > returnType ) {
253
+ <T > RowsFetchSpec <T > doSelect (Query query , Class <?> entityClass , SqlIdentifier tableName , Class <T > returnType ) {
252
254
253
255
RelationalPersistentEntity <?> entity = getRequiredEntity (entityClass );
254
256
StatementMapper statementMapper = dataAccessStrategy .getStatementMapper ().forType (entityClass );
@@ -310,7 +312,7 @@ public Mono<Integer> update(Query query, Update update, Class<?> entityClass) th
310
312
return doUpdate (query , update , entityClass , getTableName (entityClass ));
311
313
}
312
314
313
- Mono <Integer > doUpdate (Query query , Update update , Class <?> entityClass , String tableName ) {
315
+ Mono <Integer > doUpdate (Query query , Update update , Class <?> entityClass , SqlIdentifier tableName ) {
314
316
315
317
StatementMapper statementMapper = dataAccessStrategy .getStatementMapper ().forType (entityClass );
316
318
@@ -339,7 +341,7 @@ public Mono<Integer> delete(Query query, Class<?> entityClass) throws DataAccess
339
341
return doDelete (query , entityClass , getTableName (entityClass ));
340
342
}
341
343
342
- Mono <Integer > doDelete (Query query , Class <?> entityClass , String tableName ) {
344
+ Mono <Integer > doDelete (Query query , Class <?> entityClass , SqlIdentifier tableName ) {
343
345
344
346
StatementMapper statementMapper = dataAccessStrategy .getStatementMapper ().forType (entityClass );
345
347
@@ -371,7 +373,7 @@ public <T> Mono<T> insert(T entity) throws DataAccessException {
371
373
return doInsert (entity , getRequiredEntity (entity ).getTableName ());
372
374
}
373
375
374
- <T > Mono <T > doInsert (T entity , String tableName ) {
376
+ <T > Mono <T > doInsert (T entity , SqlIdentifier tableName ) {
375
377
376
378
RelationalPersistentEntity <T > persistentEntity = getRequiredEntity (entity );
377
379
@@ -434,7 +436,7 @@ private <T> Query getByIdQuery(T entity, RelationalPersistentEntity<?> persisten
434
436
return Query .query (Criteria .where (persistentEntity .getRequiredIdProperty ().getName ()).is (id ));
435
437
}
436
438
437
- String getTableName (Class <?> entityClass ) {
439
+ SqlIdentifier getTableName (Class <?> entityClass ) {
438
440
return getRequiredEntity (entityClass ).getTableName ();
439
441
}
440
442
@@ -447,7 +449,7 @@ private <T> RelationalPersistentEntity<T> getRequiredEntity(T entity) {
447
449
return (RelationalPersistentEntity ) getRequiredEntity (entityType );
448
450
}
449
451
450
- private <T > List <String > getSelectProjection (Query query , Class <T > returnType ) {
452
+ private <T > List <SqlIdentifier > getSelectProjection (Query query , Class <T > returnType ) {
451
453
452
454
if (query .getColumns ().isEmpty ()) {
453
455
@@ -457,14 +459,14 @@ private <T> List<String> getSelectProjection(Query query, Class<T> returnType) {
457
459
458
460
if (projectionInformation .isClosed ()) {
459
461
return projectionInformation .getInputProperties ().stream ().map (FeatureDescriptor ::getName )
460
- .collect (Collectors .toList ());
462
+ .map ( SqlIdentifier :: unquoted ). collect (Collectors .toList ());
461
463
}
462
464
}
463
465
464
- return Collections .singletonList ("*" );
466
+ return Collections .singletonList (SqlIdentifier . unquoted ( "*" ) );
465
467
}
466
468
467
- return query .getColumns ();
469
+ return query .getColumns (). stream (). map ( SqlIdentifier :: unquoted ). collect ( Collectors . toList ()) ;
468
470
}
469
471
470
472
private static ReactiveDataAccessStrategy getDataAccessStrategy (DatabaseClient databaseClient ) {
0 commit comments