最近学习一个项目练手时遇到的问题
1.错误如下(2个错误JPA中findOne、delete方法报错):
1.1.在用SpringBoot 2.3.4的时候,发现使用Spring Data JPA 中的findOne()方法时,不像SpringBoot 1.5.x那样可以通过直接使用:
xxxRepository.findOne(id)
1.2service层
1.3dao层
1.4解决办法:xxxRepository.findById(id).get()代替原来的findOne(id)方法。
2.原因:
2.1.查看源码发现findOne方法变成了如下所示:
<S extends T> Optional<S> findOne(Example<S> var1);
2.2.自从spring boot 2.0以后,由于用上了Java 8 的Optional,废除了原来的findOne(Id)。
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
2.3.通过查看源码,findById()方法也使用了Optional,废除了原来findone的方法:
2.4同时也注意一下根据id删除的方法在springboot2.x版本中也有了改变
2.5解决方法:xxxRepository.deleteById代替原来的delete(id)方法。
世上最让人头疼的时候是看看源码