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()。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值