The general mechanism with mongoTemplate and mongoConvert is used
@Bean
open fun mongoDbFactory(mongoClient: MongoClient, mongoClientURI: MongoClientURI) =
SimpleMongoDbFactory(mongoClient, mongoClientURI.database)
@Bean
open fun mongoTemplate(mongoDbFactory: MongoDbFactory, mongoConverter: MappingMongoConverter): MongoTemplate {
return MongoTemplate(mongoDbFactory, mongoConverter)
}
/**
* Spring data MongoDb: MappingMongoConverter remove _class
* https://stackoverflow.com/questions/6810488/spring-data-mongodb-mappingmongoconverter-remove-class/
*/
@Bean
open fun mappingMongoConverter(mongoDbFactory: MongoDbFactory) : MappingMongoConverter {
val converter = MappingMongoConverter(DefaultDbRefResolver(mongoDbFactory), MongoMappingContext())
converter.typeMapper = DefaultMongoTypeMapper(null)
return converter
}
According to spring data dependency, next converter is used to convert LocalDateTime to Date org.springframework.data.convert.JodaTimeConverters.LocalDateTimeToDateConverter
It converts LocalDateTime to Date with timezone before saving it to MongoDB Other words if you had 9:00 AM it saves it as 9:00 -/+ some timeZone (for example it saves it as 6:00 AM to mongoDB)
After I do read from DB incorrect time will be displayed as result of operation. Do I missed some configuration or should write myCustomConverter to save LocalDateTime as String?
Is it a way to override JodaConverter to write as Strings?