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 a8d89a0e8..4fd204dfc 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 @@ -938,13 +938,12 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, for (T o : batchToSave) { initializeVersionProperty(o); - Document dbDoc = new Document(); maybeEmitEvent(new BeforeConvertEvent(o, collectionName)); - writer.write(o, dbDoc); + Document document = toDocument(o, writer); - maybeEmitEvent(new BeforeSaveEvent(o, dbDoc, collectionName)); - documentList.add(dbDoc); + maybeEmitEvent(new BeforeSaveEvent(o, document, collectionName)); + documentList.add(document); } List ids = consolidateIdentifiers(insertDocumentList(collectionName, documentList), documentList); 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 aca1cab1a..feb1bd8e1 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 @@ -3026,6 +3026,24 @@ public class MongoTemplateTests { assertThat(result, hasItems(newYork, washington)); } + /** + * @see DATAMONGO-1176 + */ + @Test + public void generatesIdForInsertAll() { + + Person walter = new Person(null, "Walter"); + Person jesse = new Person(null, "Jesse"); + + template.insertAll(Arrays.asList(walter, jesse)); + + List result = template.findAll(Person.class); + + assertThat(result, hasSize(2)); + assertThat(walter.getId(), is(notNullValue())); + assertThat(jesse.getId(), is(notNullValue())); + } + /** * @see DATAMONGO-1208 */