neo4j时间转换

348 阅读2分钟

问题

如上图所示,salaryBeginDate作为时间,参数类型却是字符串,造成了在后台,接收参数时,很尴尬。我试了用String去接收,但是,报错,如下: Can not set java.lang.String field xxxxx to java.time.LocalDateTime 好吧,那我尝试用LocalDateTime试试呢,还是报错,如下: java.lang.ClassCastException: java.time.LocalDateTime cannot be cast to java.lang.String 头大,怎么还是报错。我心想用Object你该不报错了吧,果然没有报错了的,但是如果你不能转换的类型就用Object,肯定体验不好的,也不会这么去写。

解决

说说我的思路:

1、首先百度谷歌

跟大家一起,我首先是百度谷歌,果然百度出来一大堆无用的,根本解决不到任何问题(这里吐槽下,每次出来的都是CSDN相关的文章,基本都是转载的,质量之差,虽然也有不少干货,但是太少了,真的是无语),谷歌出来也没有好的解决方案,但是有几个网站有点参考价值。没办法,找不到自己需要的东西,放弃搜索了的。

2、从报错的提示入手

在我们报错的信息中,明确说了是那个类出现的问题,怎么出现的,是那个方法引起的;

然后,我就跟着提示的类去看了哈,原来是(如图):这里出现的异常,转换失败了,没办法,这里我又去百度了哈,还是鸟都没有,谷歌也是不痛不痒的,没办法,只能继续看看。

3、找出LocalDateTimeStringConverter的父类相关的实现

这里这么多的实现,我都懵逼了的,好吧,我觉得我在错误的道路上越走越远了的。

4、这个时候我想到了neo4j相关的注解

我就去找驱动包的注解看看有没有我需要的注解;果然这里有转换的注解,我瞬间觉得我看到了希望了。

我找到了Convert注解,进去看了下,

看到了value这个,居然是实现了AttributeConverter接口,这个不是我刚才找到了类LocalDateTimeStringConverter么,我一下子找到了希望。

5、重写一个自己转换的类

然后在Node类上使用注解:

最终完美解决。