Skip to content

Commit 070d784

Browse files
committed
DATAMONGO-1176 - Exclude null id fields in bulk insert.
We no longer map _id fields into Document that are null to enforce MongoDB ObjectId generation on batch insert like insertAll.
1 parent af4f0e0 commit 070d784

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -938,13 +938,12 @@ protected <T> void doInsertBatch(String collectionName, Collection<? extends T>
938938
for (T o : batchToSave) {
939939

940940
initializeVersionProperty(o);
941-
Document dbDoc = new Document();
942941

943942
maybeEmitEvent(new BeforeConvertEvent<T>(o, collectionName));
944-
writer.write(o, dbDoc);
943+
Document document = toDocument(o, writer);
945944

946-
maybeEmitEvent(new BeforeSaveEvent<T>(o, dbDoc, collectionName));
947-
documentList.add(dbDoc);
945+
maybeEmitEvent(new BeforeSaveEvent<T>(o, document, collectionName));
946+
documentList.add(document);
948947
}
949948

950949
List<Object> ids = consolidateIdentifiers(insertDocumentList(collectionName, documentList), documentList);

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java

+18
Original file line numberDiff line numberDiff line change
@@ -3026,6 +3026,24 @@ public void ignoresNullElementsForInsertAll() {
30263026
assertThat(result, hasItems(newYork, washington));
30273027
}
30283028

3029+
/**
3030+
* @see DATAMONGO-1176
3031+
*/
3032+
@Test
3033+
public void generatesIdForInsertAll() {
3034+
3035+
Person walter = new Person(null, "Walter");
3036+
Person jesse = new Person(null, "Jesse");
3037+
3038+
template.insertAll(Arrays.asList(walter, jesse));
3039+
3040+
List<Person> result = template.findAll(Person.class);
3041+
3042+
assertThat(result, hasSize(2));
3043+
assertThat(walter.getId(), is(notNullValue()));
3044+
assertThat(jesse.getId(), is(notNullValue()));
3045+
}
3046+
30293047
/**
30303048
* @see DATAMONGO-1208
30313049
*/

0 commit comments

Comments
 (0)