From 9cccab485dcddd28af86ce1ee7dd7c84a083da70 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Tue, 21 Jul 2026 10:38:18 +0200 Subject: [PATCH 1/2] 5214 - Prepare branch --- pom.xml | 2 +- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 19ab7f04c7..5fb10132d8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 5.2.0-SNAPSHOT + 5.2.0-5214-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 747b3f0d79..755913652f 100644 --- a/spring-data-mongodb-distribution/pom.xml +++ b/spring-data-mongodb-distribution/pom.xml @@ -13,7 +13,7 @@ org.springframework.data spring-data-mongodb-parent - 5.2.0-SNAPSHOT + 5.2.0-5214-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 3bdffedb8c..ec55fa8405 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -11,7 +11,7 @@ org.springframework.data spring-data-mongodb-parent - 5.2.0-SNAPSHOT + 5.2.0-5214-SNAPSHOT ../pom.xml From 0a1464effca455c63383c03d2e02e7510db3dac1 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Tue, 21 Jul 2026 10:42:43 +0200 Subject: [PATCH 2/2] Reverts change towards immutability. Criteria objects now properly mutate themselves as they used to. Closes #5214 --- .../data/mongodb/core/query/Criteria.java | 2 +- .../mongodb/core/query/CriteriaUnitTests.java | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Criteria.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Criteria.java index 689034480c..3854a597bb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Criteria.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Criteria.java @@ -94,7 +94,7 @@ public Criteria(String key) { protected Criteria(List criteriaChain, String key) { - this.criteriaChain = new ArrayList<>(criteriaChain); + this.criteriaChain = criteriaChain; this.criteriaChain.add(this); this.key = key; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/CriteriaUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/CriteriaUnitTests.java index e196e5de3e..9f4431ca89 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/CriteriaUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/CriteriaUnitTests.java @@ -159,6 +159,17 @@ void testChainedCriteria() { assertThat(c.getCriteriaObject()).isEqualTo("{ \"name\" : \"Bubba\" , \"age\" : { \"$lt\" : 21}}"); } + @Test // GH-5214 + void andOnRetainedReferenceShouldAffectOriginalCriteria() { + + Criteria criteria = Criteria.where("ID1").is("1"); + criteria.and("ID2").is("2"); + + Query query = Query.query(criteria); + + assertThat(query.getQueryObject()).isEqualTo(Document.parse("{ \"ID1\" : \"1\", \"ID2\" : \"2\" }")); + } + @Test void testCriteriaWithMultipleConditionsForSameKey() { @@ -550,13 +561,4 @@ void equalsConsidersPartialCriteriaChain() { assertThat(criteria).isNotEqualTo(partialCriteria); } - - @Test // GH-5135 - void criteriaIsImmutable() { - - Criteria base = new Criteria("alpha").is("a"); - Criteria mutated = base.and("beta"); - - assertThat(base).isNotEqualTo(mutated); - } }