问题
如上图所示,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类上使用注解:
最终完美解决。