diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Field.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Field.java index 9775fefdb..f08f8a61f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Field.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Field.java @@ -38,6 +38,7 @@ import org.springframework.util.ObjectUtils; * @author Mark Paluch * @author Owen Q * @author Kirill Egorov + * @author GaEun Kim */ public class Field { @@ -298,7 +299,7 @@ public class Field { @Override public int hashCode() { - int result = ObjectUtils.nullSafeHashCode(criteria); + int result = ObjectUtils.nullSafeHashCode(criteria.toString()); result = 31 * result + ObjectUtils.nullSafeHashCode(slices); result = 31 * result + ObjectUtils.nullSafeHashCode(elemMatches); result = 31 * result + ObjectUtils.nullSafeHashCode(positionKey); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/FieldUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/FieldUnitTests.java index 5299ac08d..2a82c723d 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/FieldUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/FieldUnitTests.java @@ -28,6 +28,7 @@ import java.util.List; * @author Owen Q * @author Mark Paluch * @author Kirill Egorov + * @author GaEun Kim */ class FieldUnitTests { @@ -85,4 +86,18 @@ class FieldUnitTests { assertThat(left).isEqualTo(right); } + + @Test + void assertDifferentHashCodesForExcludeAndIncludeQueries() { + + Query queryWithExclude = new Query(); + queryWithExclude.fields().exclude("key1"); + queryWithExclude.fields().exclude("key2"); + + Query queryWithInclude = new Query(); + queryWithInclude.fields().include("key1"); + queryWithInclude.fields().include("key2"); + + assertThat(queryWithExclude.hashCode()).isNotEqualTo(queryWithInclude.hashCode()); + } }