【问题标题】:Spring Data Neo4j: Converter of object to string works, but object to long is not executedSpring Data Neo4j:对象到字符串的转换器工作,但对象到长的没有执行
【发布时间】:2012-12-28 11:41:11
【问题描述】:

我有一个非常奇怪的问题,即从域对象转换为 Neo4j 可以本地存储为属性值的那些。作为测试用例,我使用 Joda 的 DateTime。这种类型的对象可以很容易地转换为 String 或 Long。

使用此代码可以完美地完成从 DateTime 到 String 的转换:

public class DateTimeToStringConverter implements Converter<DateTime, String> {

  @Override
  public String convert(DateTime source) {
    return source.toDateTimeISO().toString();
  }

}

属性显示在节点中:

Node[1] {
  '__type__' = '...', 
  'entityEditedAt' = '2012-12-28T12:32:50.308+01:00', 
  'entityCreatedAt' = '2012-12-28T12:32:50.297+01:00',
  ...
}

但是,如果我想将 DateTime 保存为 Long(用于在 Cypher 中按时间排序),它根本不起作用。这是我的转换器:

public class DateTimeToLongConverter implements Converter<DateTime, Long> {

  @Override
  public Long convert(DateTime source) {
      return source.toDateTimeISO().getMillis();
  }

}

该属性未保存在节点上。因此它完全丢失了。不会抛出异常。似乎根本没有调用转换代码。

转换器使用基于代码的配置连接到 Spring Data:

@Bean
public ConversionServiceFactoryBean conversionService() {
    Set converters = Sets.newHashSet();

    // These work!
    converters.add(new DateTimeToStringConverter());
    converters.add(new StringToDateTimeConverter());

    // These don't :-(
    //converters.add(new DateTimeToLongConverter());
    //converters.add(new LongToDateTimeConverter());

    ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
    bean.setConverters(converters);
    return bean;
}

有什么线索吗?我在这里很迷茫,因为我认为它应该可以工作......

编辑 我在Spring Data Neo4j documentation 中发现了以下文字:

使用 Spring 转换服务可转换为字符串的所有字段都将存储为字符串。

这是否意味着只支持转换为字符串?这似乎相当有限。

【问题讨论】:

    标签: spring neo4j spring-data spring-data-neo4j


    【解决方案1】:

    告诉 SDN 您希望将您的 joda DateTime 属性作为 long 存储:

    @NodeEntity
    public class MyEntity {
        ...
        @GraphProperty(propertyType = Long.class)
        private DateTime timestamp;
        ....
    }
    

    然后您注册的 DateTimeToLongConverter 将启动。

    【讨论】:

    • 啊酷。然而,根据这篇文章forum.springsource.org/…,它似乎可以与版本 2.1.M1 一起使用。我会尝试新版本。
    猜你喜欢
    • 2014-09-17
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    相关资源
    最近更新 更多