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 8d60f80ae..26d7c0001 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 @@ -33,6 +33,7 @@ import org.bson.codecs.Codec; import org.bson.conversions.Bson; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -259,8 +260,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.mongoDbFactory = dbFactory; this.exceptionTranslator = that.exceptionTranslator; this.sessionSynchronization = that.sessionSynchronization; - this.mongoConverter = that.mongoConverter instanceof MappingMongoConverter ? getDefaultMongoConverter(dbFactory) - : that.mongoConverter; + this.mongoConverter = that.mongoConverter; this.queryMapper = that.queryMapper; this.updateMapper = that.updateMapper; this.schemaMapper = that.schemaMapper; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ClientSessionTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ClientSessionTests.java index 380efe0d1..2a8280bbc 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ClientSessionTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ClientSessionTests.java @@ -19,7 +19,6 @@ import static org.assertj.core.api.Assertions.*; import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; -import com.mongodb.MongoClient; import lombok.AllArgsConstructor; import lombok.Data; @@ -30,7 +29,9 @@ import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; + import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.test.util.MongoTestUtils; import org.springframework.data.mongodb.test.util.MongoVersion; @@ -39,6 +40,7 @@ import org.springframework.data.mongodb.test.util.ReplicaSet; import org.springframework.data.util.Version; import com.mongodb.ClientSessionOptions; +import com.mongodb.MongoClient; import com.mongodb.client.ClientSession; /** @@ -89,6 +91,18 @@ public class ClientSessionTests { session.close(); } + @Test // DATAMONGO-2241 + public void shouldReuseConfiguredConverter() { + + ClientSession session = client.startSession(ClientSessionOptions.builder().causallyConsistent(true).build()); + + MongoConverter converter = template.getConverter(); + MongoConverter sessionTemplateConverter = template.withSession(() -> session) + .execute(MongoOperations::getConverter); + + assertThat(sessionTemplateConverter).isSameAs(converter); + } + @Test // DATAMONGO-1920 @MongoVersion(asOf = "3.7.3") public void withCommittedTransaction() {