Do not prefix unsafe orer by expressions with table prefix.

Such expressions now get passed on unchanged.

This also deprecates org.springframework.data.r2dbc.query.QueryMapper.getMappedObject(Sort, RelationalPersistentEntity<?>).
It was only used in tests and translates an Order into another Order, which sounds wrong.

Closes #1512
Original pull request: #1513
This commit is contained in:
Jens Schauder
2023-05-12 16:14:08 +02:00
committed by Mark Paluch
parent 9acf426ff7
commit e0a0bb2b5d
4 changed files with 31 additions and 3 deletions

View File

@@ -93,6 +93,8 @@ public class QueryMapper {
for (Sort.Order order : sort) {
SqlSort.validate(order);
OrderByField simpleOrderByField = createSimpleOrderByField(table, entity, order);
OrderByField orderBy = simpleOrderByField
.withNullHandling(order.getNullHandling());
@@ -105,7 +107,9 @@ public class QueryMapper {
private OrderByField createSimpleOrderByField(Table table, RelationalPersistentEntity<?> entity, Sort.Order order) {
SqlSort.validate(order);
if (order instanceof SqlSort.SqlOrder sqlOrder && sqlOrder.isUnsafe()) {
return OrderByField.from(Expressions.just(sqlOrder.getProperty()));
}
Field field = createPropertyField(entity, SqlIdentifier.unquoted(order.getProperty()), this.mappingContext);
return OrderByField.from(table.column(field.getMappedColumnName()));