diff --git a/pom.xml b/pom.xml
index 8887800fc3..4055142cec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 4.5.0-SNAPSHOT
+ 4.5.0-GH-4944-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index 58c63dfc97..71f5fc494d 100644
--- a/spring-data-mongodb-distribution/pom.xml
+++ b/spring-data-mongodb-distribution/pom.xml
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-mongodb-parent
- 4.5.0-SNAPSHOT
+ 4.5.0-GH-4944-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 37e68c6f78..40e9dd359f 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -13,7 +13,7 @@
org.springframework.data
spring-data-mongodb-parent
- 4.5.0-SNAPSHOT
+ 4.5.0-GH-4944-SNAPSHOT
../pom.xml
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 67ef3a3081..fd547c61a0 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
@@ -1433,7 +1433,10 @@ protected Collection doInsertBatch(String collectionName, Collection ex
maybeEmitEvent(new BeforeSaveEvent<>(initialized, document, collectionName));
initialized = maybeCallBeforeSave(initialized, document, collectionName);
- documentList.add(document);
+ MappedDocument mappedDocument = queryOperations.createInsertContext(MappedDocument.of(document))
+ .prepareId(uninitialized.getClass());
+
+ documentList.add(mappedDocument.getDocument());
initializedBatchToSave.add(initialized);
}
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 83d4e30cc5..6aaec4011e 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
@@ -34,6 +34,7 @@
import java.util.stream.IntStream;
import java.util.stream.Stream;
+import org.bson.Document;
import org.bson.types.ObjectId;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
@@ -3110,6 +3111,18 @@ public void generatesIdForInsertAll() {
assertThat(jesse.getId()).isNotNull();
}
+ @Test // GH-4944
+ public void insertAllShouldConvertIdToTargetTypeBeforeSave() {
+
+ RawStringId walter = new RawStringId();
+ walter.value = "walter";
+
+ RawStringId returned = template.insertAll(List.of(walter)).iterator().next();
+ org.bson.Document document = template.execute(RawStringId.class, collection -> collection.find().first());
+
+ assertThat(returned.id).isEqualTo(document.get("_id"));
+ }
+
@Test // DATAMONGO-1208
public void takesSortIntoAccountWhenStreaming() {