我最初的 @NodeEntity 类具有 java.util.Date 类型的 @GraphProperty。图形存储库 API 自动将其转换为长/字符串值,并根据我的属性类型存储它。 由于我想从 csv 导入大量数据,因此我希望此日期字段采用自定义或预定义的字符串格式,例如“yyyyMMdd”。所以我为 String -> Date 和 Date -> String 编写了 spring 转换器工厂,并将它们注册在 spring xml 中以用于转换服务。但不幸的是我的转换器从未被调用过。仅调用标准转换器。 后来,当我将日期对象包装在 MyDate 类中并将转换器更改为 String -> MyDate ,反之亦然而不是 java.util.Date 时,将调用转换器并完成所需的序列化。 我不希望这个 MyDate 包装器只是为了转换器。现在,我的问题是,如何使用我的转换器覆盖默认日期转换器?
最佳答案
试试这个:
@Configuration
@EnableNeo4jRepositories
static class TestConfig extends Neo4jConfiguration {
@Bean
GraphDatabaseService graphDatabaseService() {
return new ImpermanentGraphDatabase();
}
@Bean
protected ConversionService neo4jConversionService() throws Exception {
ConversionService conversionService = super.neo4jConversionService();
ConverterRegistry registry = (ConverterRegistry) conversionService;
registry.removeConvertible(Date.class, String.class);
registry.removeConvertible(String.class, Date.class);
//add your own converters like this
registry.addConverter(new MyDateToStringConverter());
registry.addConverter(new MyStringToDateConverter());
return conversionService;
}
}
关于neo4j - Spring data neo4j - 用自定义转换器替换提供的日期转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25142056/