當(dāng)通過jpa通過id查詢時,使用 findById(id).get(),當(dāng)id不存在當(dāng),也就是數(shù)據(jù)庫沒有對應(yīng)當(dāng)id數(shù)據(jù)時,就回報上面當(dāng)異常
后來查看源碼,發(fā)現(xiàn):
public T get() { if (value == null) { throw new NoSuchElementException("No value present"); } return value; }也就是說當(dāng)查不到值的時候,jpa統(tǒng)一處理為拋異常,所以每次取之前都要判斷有沒有數(shù)據(jù),后來發(fā)現(xiàn)了這個
public boolean isPresent() { return value != null; }于是代碼就這樣寫
Optional<T> optionalT = orderDetailRepository.findById(id); return optionalT.isPresent() ? optionalT.get(): null;