在用SpringBoot 2的時候,發現使用Spring Data JPA 的自帶findOne()方法時,不像以前那樣可以通過直接使用:
xxxRepository.findOne(id)
傳入id來獲取一個對象。查看源碼發現findOne方法變成了如下所示:
<S extends T> Optional<S> findOne(Example<S> var1);
原來是自從spring boot 2.0以后,由於用上了Java 8 的Optional,廢除了原來的findOne(Id)。
原來是自從spring boot 2.0以后,由於用上了Java 8 的Optional,廢除了原來的findOne(Id)。Optional 是個容器:它可以保存類型T的值,或者僅僅保存null。Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測。
findById()方法也使用了Optional,廢除了原來的方法:
Optional<T> findById(ID var1);
解決方法:調用findById方法返回Optional對象,再調用Optional的get()方法返回該對象,即用xxxRepository.findById(id).get()代替原來的findOne(id)方法。