程序報:
java.util.NoSuchElementException: null
這是List 的錯誤荸镊,因為使用的JPA,所以首先懷疑是數(shù)據(jù)庫表的字段數(shù)量和Java entity 的成員數(shù)量不一致路鹰。
數(shù)了一下贷洲,兩者的數(shù)量是一直的。這種猜想失敗晋柱。
跟蹤到List的代碼里,打斷點诵叁,發(fā)現(xiàn)是處理第二個參數(shù)的時候雁竞,就掛了。這樣問題就定位出來了。
public List<Follow> findByUserUnionId(String unionId) {
return dao.findByUserUnionId(unionId,0);
}
調(diào)用了的dao的代碼:
List<Follow> findByUserUnionId(String userUnionId,Integer delFlag);
正確的應(yīng)該是:
List<Follow> findByUserUnionIdAndDelFlag(String userUnionId,Integer delFlag);
在編寫代碼的時候碑诉,少了 AndDelFlag 彪腔, 但參數(shù)實際是傳了兩個,這樣在處理的時候就直接報錯了进栽。
這個問題比較隱蔽德挣,因為編譯是沒有任何錯誤的。運行的時候雖然報了這個錯誤快毛,但怎么看都沒問題格嗅。
所以,個人覺得唠帝,復(fù)雜的情況下屯掖,對于JPA 來說,還是使用 @Query 注解比較好襟衰,如果出錯了贴铜,會同時報SQL的錯誤,這就好定位問題了瀑晒。