@ -22,6 +22,7 @@ import java.util.List;
@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Map ;
import java.util.regex.Pattern ;
import org.jetbrains.annotations.NotNull ;
import org.springframework.data.domain.Sort ;
import org.springframework.data.mapping.MappingException ;
import org.springframework.data.mapping.PersistentPropertyPath ;
@ -50,6 +51,8 @@ import org.springframework.r2dbc.core.binding.MutableBindings;
@@ -50,6 +51,8 @@ import org.springframework.r2dbc.core.binding.MutableBindings;
import org.springframework.util.Assert ;
import org.springframework.util.ClassUtils ;
import static org.springframework.data.relational.core.sql.Expressions.* ;
/ * *
* Maps { @link CriteriaDefinition } and { @link Sort } objects considering mapping metadata and dialect - specific
* conversion .
@ -102,7 +105,9 @@ public class QueryMapper {
@@ -102,7 +105,9 @@ public class QueryMapper {
* @param sort must not be { @literal null } .
* @param entity related { @link RelationalPersistentEntity } , can be { @literal null } .
* @return
* @deprecated without replacement .
* /
@Deprecated ( since = "3.2" , forRemoval = true )
public Sort getMappedObject ( Sort sort , @Nullable RelationalPersistentEntity < ? > entity ) {
if ( entity = = null ) {
@ -137,6 +142,8 @@ public class QueryMapper {
@@ -137,6 +142,8 @@ public class QueryMapper {
for ( Sort . Order order : sort ) {
SqlSort . validate ( order ) ;
OrderByField simpleOrderByField = createSimpleOrderByField ( table , entity , order ) ;
OrderByField orderBy = simpleOrderByField
. withNullHandling ( order . getNullHandling ( ) ) ;
@ -147,9 +154,12 @@ public class QueryMapper {
@@ -147,9 +154,12 @@ 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 ( ) ) ) ;