【问题标题】:How to use time-stamp in spring-data-neo4j如何在 spring-data-neo4j 中使用时间戳
【发布时间】:2015-09-15 16:11:47
【问题描述】:

我们将 mysql 和 hibernate4 一起用于我们的一个应用程序。我们在数据库中存储了一些错误消息。 下面是用于在 DB 中存储当前时间的类属性。

@Column(name = "generation_ts")
private java.sql.Timestamp generationTs;

现在我们正在尝试将这些数据与 mysql 数据库一起存储在 Neo4J 图形数据库中。我们也不想改变类的当前行为。

当我试图将这个对象保存在 Neo4J DB 中时,它会抛出如下异常:

原因:java.lang.IllegalArgumentException:时间戳格式必须是yyyy-mm-dd hh:mm:ss[.fffffffff] 在 java.sql.Timestamp.valueOf(Timestamp.java:202) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.springframework.core.convert.support.ObjectToObjectConverter.convert(ObjectToObjectConverter.java:71)

我试过this。但它也给出了同样的例外。

那么有没有其他方法可以将此对象保存到 mysql DB 以及 Neo4j DB。

【问题讨论】:

    标签: java neo4j spring-data-neo4j


    【解决方案1】:

    我认为您可以使用它来触发正确的转换器:

    @GraphProperty(propertyType=long.class)
    private java.sql.Timestamp generationTs;
    

    【讨论】:

    • 是的,我已经读过这个。在同一份文件中。但它不会将 Timestamp 转换为 Long 值。它还提到,在注释归档后“必须在Spring-Config中注册一个Converter”。那你能帮我写这个转换器吗?
    • 有一个开箱即用的 Date to Long 转换器,由于 Timestamp 是 Date 的子类,它应该可以直接工作。
    • 是的,因为 Neo4j 还没有数据类型,所以 Long 或 String 是常用的。
    • 我使用了您在上面评论中提到的相同方式。但它什么都不做。我没有在创建的节点中获得任何名称为 generationTs 的属性。此外,当我将“propertyType”更改为 String 时,它给出的异常与问题中提到的相同。
    猜你喜欢
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 2016-02-23
    • 2019-03-17
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多