0

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?

user2105282
  • 724
  • 1
  • 12
  • 26
  • Currently, I defining only needed custom converters for my mongo-converter and exclude LocalDateTimeToDateConverter, instead, I use self-implementation of LocalDateTimeToStringConverter. – user2105282 Apr 05 '18 at 14:13

1 Answers1

0

Still, I didn't find how to override standard spring mappingMongoConverter, I created the converter from scratch and added mongo converters, which I need + two extra converter LocalDateTimeToStringConverter StringToLocalDateTimeConverter

user2105282
  • 724
  • 1
  • 12
  • 26