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 4c6aef514..9f81181bd 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 @@ -85,6 +85,8 @@ public class QueryMapper { ids.add(convertId(id)); } valueDbo.put(inKey, ids.toArray(new Object[ids.size()])); + } else if (valueDbo.containsField("$ne")) { + valueDbo.put("$ne", convertId(valueDbo.get("$ne"))); } else { value = getMappedObject((DBObject) value, null); } @@ -101,8 +103,6 @@ public class QueryMapper { newConditions.add(getMappedObject((DBObject) iter.next(), null)); } value = newConditions; - } else if (key.equals("$ne")) { - value = convertId(value); } newDbo.put(newKey, convertSimpleOrDBObject(value, null)); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java index e95ee32f9..6fb7cfa7a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java @@ -218,17 +218,19 @@ public class QueryMapperUnitTests { * @see DATAMONGO-493 */ @Test - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void foo() { + public void doesNotTranslateNonIdPropertiesFor$NeCriteria() { - Query query = Query.query(Criteria.where("id").is("id_value").and("publishers").ne("a_string_value")); + ObjectId accidentallyAnObjectId = new ObjectId(); + + Query query = Query.query(Criteria.where("id").is("id_value").and("publishers") + .ne(accidentallyAnObjectId.toString())); DBObject dbObject = mapper.getMappedObject(query.getQueryObject(), context.getPersistentEntity(UserEntity.class)); - assertThat(dbObject.get("publishers"), isA((Class) DBObject.class)); + assertThat(dbObject.get("publishers"), is(instanceOf(DBObject.class))); DBObject publishers = (DBObject) dbObject.get("publishers"); assertThat(publishers.containsField("$ne"), is(true)); - assertThat(publishers.get("$ne"), is((Object) "a_string_value")); + assertThat(publishers.get("$ne"), is(instanceOf(String.class))); } class IdWrapper {