我注册了一组 Mongo 转换器(包括Jsr310Converters
),但它没有将LocalDate
转换为Date
(因为canConvertFromLocalDateToDate等于{ {1}})
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;
}
字段的实体时,我得到一个例外:
org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型[java.time.LocalDate]转换为类型[java.util.Date]的转换器
答案 0 :(得分:1)
实际上我发现我在运行时有2个MappingMongoConverter实例。所以我只是重用spring创建的实例而不是实例化一个新实例: @Autowired MappingMongoConverter转换器;
完整的代码段是:
@Configuration
public class MongoConfig {
@Autowired
MappingMongoConverter converter;
@Bean
public MongoTemplate mongoTemplate() throws Exception {
// NO NEED TO INSTANTIATE NEW MappingMongoConverter
//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);
converter.afterPropertiesSet();
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory, converter);
return mongoTemplate;
}