findOne(id))无法转换成相应的类型
return repository.findOne(id);
应该寻找单个元素需要使用,findById(id);
return repository.findById(id).orElse(null);
以前一直用的repository.findOne(ID id);
,这次用SpringBoot构建新项目后,并没有找到这个findOne(ID id),只有另外的
分析:
看了下jpa的依赖,因为SpringBoot的版本是2.0.0的,所以spring-data-jpa的版本也是2.0.x。
拿2.0.5的源码和之前可行的1.11.9做了对比。
对比CrudRepository接口中:
各种方法名改变蒙蔽。。然而其实也一样,不过findOne方法的返回值也改了,变成了 Optional<T>
。才疏学浅不知道什么意思,只能点进去看一下了。
其中:
get()方法可以获取到值,但是直接这样写的话如果值不存在就要抛异常。所以要先做判断,值存在再get(),或者就是写在try-catch里。
也可以用它的findById(id).orElse(null); 存在就会直接返回值,如果不存在会返回别的值,这里不存在返回的是null,(orElse里可以给默认值)。
解决:
如图吧
结果:
存在时都一样,就是输出了该类目重写的toString方法里的数据。
不存在时:
所以就是我所能解决的有两个方法就是:
1.使用回以前的版本1.5.9等等这些的,还是用findOne(ID id)的方法。
2.就是用findById(ID id),然后用.get()前要判断是否是null,或者直接try-catch,或者用.orElse(null),推荐orElse()。