diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java index 2ab007824..6bd34a6c2 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java @@ -20,7 +20,6 @@ import java.util.HashSet; import java.util.Set; import java.util.regex.Pattern; -import com.mongodb.util.JSON; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.QueryMapper; @@ -31,6 +30,7 @@ import org.springframework.util.ClassUtils; import com.mongodb.DBObject; import com.mongodb.DBRef; +import com.mongodb.util.JSON; import com.querydsl.core.types.Constant; import com.querydsl.core.types.Expression; import com.querydsl.core.types.Operation; @@ -116,7 +116,7 @@ class SpringDataMongodbSerializer extends MongodbSerializer { @Override protected DBObject asDBObject(String key, Object value) { - if (key.endsWith(ID_KEY)) { + if (ID_KEY.equals(key) || (key != null && key.endsWith("." + ID_KEY))) { return convertId(key, value); } return super.asDBObject(key, value instanceof Pattern ? value : converter.convertToMongoType(value)); @@ -134,8 +134,7 @@ class SpringDataMongodbSerializer extends MongodbSerializer { Object convertedId = mapper.convertId(idValue); - DBObject mappedIdValue = mapper.getMappedObject(super.asDBObject(key, convertedId), - null); + DBObject mappedIdValue = mapper.getMappedObject(super.asDBObject(key, convertedId), null); return (DBObject) JSON.parse(JSON.serialize(mappedIdValue)); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java index bf20640b5..02bc21217 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java @@ -20,6 +20,7 @@ import static org.junit.Assert.*; import static org.springframework.data.mongodb.core.DBObjectTestUtils.*; import java.util.Collections; +import java.util.List; import org.bson.types.ObjectId; import org.hamcrest.Matchers; @@ -50,7 +51,7 @@ import com.querydsl.core.types.dsl.StringPath; /** * Unit tests for {@link SpringDataMongodbSerializer}. - * + * * @author Oliver Gierke * @author Christoph Strobl */ @@ -158,9 +159,9 @@ public class SpringDataMongodbSerializerUnitTests { DBObject serialized = serializer.asDBObject("_id", new BasicDBObject("$in", objectIds)); DBObject _id = getAsDBObject(serialized, "_id"); - Object[] $in = getTypedValue(_id, "$in", Object[].class); + List $in = getTypedValue(_id, "$in", List.class); - assertThat($in, Matchers. arrayContaining(firstId, secondId)); + assertThat($in, contains(firstId, secondId)); } @Test // DATAMONGO-1485