diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupport.java index 42bce7b39..4e6c3547c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupport.java @@ -20,9 +20,10 @@ import java.util.Optional; import java.util.stream.Stream; import org.bson.Document; + import org.springframework.dao.IncorrectResultSizeDataAccessException; -import org.springframework.data.domain.Window; import org.springframework.data.domain.ScrollPosition; +import org.springframework.data.domain.Window; import org.springframework.data.mongodb.core.query.NearQuery; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.SerializationUtils; @@ -228,11 +229,13 @@ class ExecutableFindOperationSupport implements ExecutableFindOperation { } @Override + @Nullable public ReadPreference getReadPreference() { return delegate.getReadPreference(); } @Override + @Nullable public Document getSortObject() { return delegate instanceof SortingQueryCursorPreparer sqcp ? sqcp.getSortObject() : null; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 36bb190d4..817609756 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -2643,7 +2643,9 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, if (LOGGER.isDebugEnabled()) { - Document mappedSort = preparer instanceof SortingQueryCursorPreparer sqcp ? getMappedSortObject(sqcp.getSortObject(), sourceClass) : null; + Document mappedSort = preparer instanceof SortingQueryCursorPreparer sqcp + ? getMappedSortObject(sqcp.getSortObject(), entity) + : null; LOGGER.debug(String.format("find using query: %s fields: %s sort: %s for class: %s in collection: %s", serializeToJsonSafely(mappedQuery), mappedFields, serializeToJsonSafely(mappedSort), sourceClass, collectionName)); @@ -3011,7 +3013,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, } @Nullable - private Document getMappedSortObject(Document sortObject, MongoPersistentEntity entity) { + private Document getMappedSortObject(Document sortObject, @Nullable MongoPersistentEntity entity) { if (ObjectUtils.isEmpty(sortObject)) { return null; @@ -3373,11 +3375,8 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, class QueryCursorPreparer implements SortingQueryCursorPreparer { private final Query query; - private final Document sortObject; - private final int limit; - private final long skip; private final @Nullable Class type; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SortingQueryCursorPreparer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SortingQueryCursorPreparer.java index 3cefe2b3c..c69fb4ad1 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SortingQueryCursorPreparer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/SortingQueryCursorPreparer.java @@ -19,10 +19,14 @@ import org.bson.Document; import org.springframework.lang.Nullable; /** + * {@link CursorPreparer} that exposes its {@link Document sort document}. + * * @author Christoph Strobl + * @since 4.4.3 */ interface SortingQueryCursorPreparer extends CursorPreparer { - @Nullable - Document getSortObject(); + @Nullable + Document getSortObject(); + }