MongoDB No converter found capable of converting from type [java.lang.String] to type [java.time.LocalDateTime]

11,861

This solved the problem:

@Configuration
public class MongoConfiguration extends AbstractMongoConfiguration {

    @Value("${spring.data.mongodb.database:test}")
    private String database;

    @Value("${spring.data.mongodb.host:localhost}:${spring.data.mongodb.port:27017}")
    private String host;

    @Autowired
    private MappingMongoConverter mongoConverter;

    // Converts . into a mongo friendly char
    @PostConstruct
    public void setUpMongoEscapeCharacterConversion() {
        mongoConverter.setMapKeyDotReplacement("_");
    }

    @Override
    protected String getDatabaseName() {
        return database;
    }

    @Override
    public Mongo mongo() throws Exception {
        return new MongoClient(host);
    }

    @Bean
    @Override
    public CustomConversions customConversions() {
        List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>();
        converterList.add(new MongoLocalDateTimeFromStringConverter());
        return new CustomConversions(converterList);
    }

    private static final class MongoLocalDateTimeFromStringConverter implements Converter<String, LocalDateTime> {
        @Override
        public LocalDateTime convert(String source) {
            return source == null ? null : LocalDateTime.parse(source);
        }
    }
}
Share:
11,861
Maksym
Author by

Maksym

Software engineer: https://www.linkedin.com/in/jetcrypt

Updated on July 26, 2022

Comments

  • Maksym
    Maksym almost 2 years

    MongoDB, Spring Data, findAll() method error:

    No converter found capable of converting from type [java.lang.String] to type [java.time.LocalDateTime]

    public class EntityName {
        @Id
        private String id;
        private Map<LocalDateTime, Integer> statistic;
    }
    

    I am able to save entity, but not able to load it. Any quick fixes?