Spring数据neo4j - 用自定义转换器替换提供的Date转换器?

时间:2014-08-05 14:59:30

标签: neo4j spring-data-neo4j

我最初的@NodeEntity类有一个java.util.Date类型的@GraphProperty。图形存储库API自动将其转换为long / string值,并根据我的属性类型存储它。 由于我想从csv导入大量数据,我希望这个日期字段是我自定义或预定义的字符串格式,比如" yyyyMMdd"。所以我为两个String写了我的弹簧转换器工厂 - >日期和DAte - >字符串并在spring xml中注册它们以进行转换服务。但不幸的是我的转换器从未被调用过。仅调用标准转换器。 稍后,当我将日期对象包装在MyDate类中并将转换器更改为String - >调用MyDAte而不是java.util.Date,调用转换器并完成所需的序列化。 我不希望这个MyDate包装器只是为了转换器而使用Date。现在,我的问题是,如何使用我的转换器覆盖默认日期转换器?

1 个答案:

答案 0 :(得分:4)

试试这个:

@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;
    }
}