diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java index 5ba6ca37c..112afdc21 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java @@ -889,10 +889,14 @@ public class QueryMapper { private final KeyMapper keyMapper; - PositionParameterRetainingPropertyKeyConverter(String rawKey) { + public PositionParameterRetainingPropertyKeyConverter(String rawKey) { this.keyMapper = new KeyMapper(rawKey); } + /* + * (non-Javadoc) + * @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object) + */ @Override public String convert(MongoPersistentProperty source) { return keyMapper.mapPropertyName(source); @@ -926,7 +930,7 @@ public class QueryMapper { */ static class KeyMapper { - Iterator iterator; + private final Iterator iterator; public KeyMapper(String key) { @@ -943,14 +947,13 @@ public class QueryMapper { protected String mapPropertyName(MongoPersistentProperty property) { String mappedName = PropertyToFieldNameConverter.INSTANCE.convert(property); - boolean inspect = iterator.hasNext(); + while (inspect) { String partial = iterator.next(); + boolean isPositional = (isPositionalParameter(partial) && (property.isMap() || property.isCollectionLike())); - boolean isPositional = (isPositionalParameter(partial) && (property.isMap() || property.isCollectionLike() || property - .isArray())); if (isPositional) { mappedName += "." + partial; } @@ -961,7 +964,7 @@ public class QueryMapper { return mappedName; } - boolean isPositionalParameter(String partial) { + private static boolean isPositionalParameter(String partial) { if (partial.equals("$")) { return true; @@ -975,7 +978,6 @@ public class QueryMapper { } } } - } /**