diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java index b794a3a85..3740a7f05 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java @@ -49,10 +49,24 @@ public class Meta { } } - private final Map values = new LinkedHashMap(2); - private final Set flags = new LinkedHashSet(); + private final Map values = new LinkedHashMap<>(2); + private final Set flags = new LinkedHashSet<>(); private Integer cursorBatchSize; + public Meta() {} + + /** + * Copy a {@link Meta} object. + * + * @since 2.2 + * @param source + */ + Meta(Meta source) { + this.values.putAll(source.values); + this.flags.addAll(source.flags); + this.cursorBatchSize = source.cursorBatchSize; + } + /** * @return {@literal null} if not set. */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java index 88e273522..861e1b560 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java @@ -30,6 +30,7 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import org.bson.Document; + import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Order; @@ -373,7 +374,7 @@ public class Query { * Set the number of documents to return in each response batch.
* Use {@literal 0 (zero)} for no limit. A negative limit closes the cursor after returning a single * batch indicating to the server that the client will not ask for a subsequent one. - * + * * @param batchSize The number of documents to return per batch. * @return this. * @see Meta#setCursorBatchSize(int) @@ -432,7 +433,7 @@ public class Query { } /** - * @return never {@literal null}.ΓΈ + * @return never {@literal null}. * @since 1.6 */ public Meta getMeta() { @@ -519,11 +520,8 @@ public class Query { target.collation = source.collation; target.restrictedTypes.addAll(source.restrictedTypes); - if (source.getMeta() != null && source.getMeta().hasValues()) { - - Meta meta = new Meta(); - source.getMeta().values().forEach(it -> meta.setValue(it.getKey(), it.getValue())); - target.setMeta(meta); + if (source.getMeta().hasValues()) { + target.setMeta(new Meta(source.getMeta())); } return target;