Skip to content

Commit 65b7404

Browse files
committed
Fix Document comparison in equals
1 parent 94f1e4a commit 65b7404

File tree

1 file changed

+14
-1
lines changed
  • spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query

1 file changed

+14
-1
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Criteria.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Iterator;
2424
import java.util.LinkedHashMap;
2525
import java.util.List;
26+
import java.util.Map;
2627
import java.util.Map.Entry;
2728
import java.util.regex.Pattern;
2829
import java.util.stream.Collectors;
@@ -997,8 +998,20 @@ private boolean isEqual(Object left, Object right) {
997998
}
998999
Document leftDocument = (Document) left;
9991000
Document rightDocument = (Document) right;
1001+
Iterator leftIterator = leftDocument.entrySet().iterator();
1002+
Iterator rightIterator = rightDocument.entrySet().iterator();
10001003

1001-
return isEqual(leftDocument.values(), rightDocument.values());
1004+
while (leftIterator.hasNext() && rightIterator.hasNext()) {
1005+
Map.Entry leftEntry = (Map.Entry)leftIterator.next();
1006+
Map.Entry rightEntry = (Map.Entry)rightIterator.next();
1007+
if (!isEqual(leftEntry.getKey(), rightEntry.getKey())) {
1008+
return false;
1009+
}
1010+
if (!isEqual(leftEntry.getValue(), rightEntry.getValue())) {
1011+
return false;
1012+
}
1013+
}
1014+
return !leftIterator.hasNext() && !rightIterator.hasNext();
10021015
}
10031016

10041017
if (Collection.class.isAssignableFrom(left.getClass())) {

0 commit comments

Comments
 (0)