diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index ad1a0cd19..37e4f9831 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -798,7 +798,6 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { } } - @SuppressWarnings("unchecked") protected void doSave(String collectionName, T objectToSave, MongoWriter writer) { assertUpdateableIdIfNotSet(objectToSave); @@ -811,7 +810,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { writer.write(objectToSave, dbDoc); } else { try { - objectToSave = (T) JSON.parse((String) objectToSave); + dbDoc = (DBObject) JSON.parse((String) objectToSave); } catch (JSONParseException e) { throw new MappingException("Could not parse given String to save into a JSON document!", e); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index 35b453ef5..f699cd1dd 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -1597,6 +1597,21 @@ public class MongoTemplateTests { } } + /** + * @see DATAMONGO-679 + */ + @Test + public void savesJsonStringCorrectly() { + + DBObject dbObject = new BasicDBObject().append("first", "first").append("second", "second"); + + template.save(dbObject.toString(), "collection"); + + List result = template.findAll(DBObject.class, "collection"); + assertThat(result.size(), is(1)); + assertThat(result.get(0).containsField("first"), is(true)); + } + static class MyId { String first;