我注册了一组Mongo转换器(包括Jsr310Converters),但它没有将LocalDate转换为Date(因为canConvertFromLocalDateToDate等于false)
@Configuration
public class MongoConfig {
@Autowired
MongoDbFactory mongoDbFactory;
@Bean
public MongoTemplate mongoTemplate() throws Exception {
MappingMongoConverter converter = new MappingMongoConverter(new DefaultDbRefResolver(mongoDbFactory),
new MongoMappingContext());
converter.setMapKeyDotReplacement("_");
List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>();
converters.add(new GeoPointConverter());
converters.addAll(Jsr310Converters.getConvertersToRegister());
converters.addAll(JodaTimeConverters.getConvertersToRegister());
converters.addAll(ThreeTenBackPortConverters.getConvertersToRegister());
converter.setCustomConversions(new CustomConversions(CustomConversions.StoreConversions.NONE, converters));
//is FALSE !
boolean canConvertFromLocalDateToDate = converter.getConversionService().canConvert(LocalDate.class, Date.class);
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory, converter);
return mongoTemplate;
}
}
当我尝试使用LocalDate字段存储一些实体时,我得到一个异常:
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.time.LocalDate] to type [java.util.Date]
1 回答
事实上,我发现在运行时我有2个MappingMongoConverter实例 . 所以我只是重用spring创建的实例而不是实例化一个新实例:@Autowired MappingMongoConverter转换器;
完整的片段是: