程序報:
java.util.NoSuchElementException: null
這是List 的錯誤,因爲使用的JPA,所以首先懷疑是數據庫表的字段數量和Java entity 的成員數量不一致。
數了一下,兩者的數量是一直的。這種猜想失敗。
跟蹤到List的代碼裏,打斷點,發現是處理第二個參數的時候,就掛了。這樣問題就定位出來了。
public List<Follow> findByUserUnionId(String unionId) {
return dao.findByUserUnionId(unionId,0);
}
調用了的dao的代碼:
List<Follow> findByUserUnionId(String userUnionId,Integer delFlag);
正確的應該是:
List<Follow> findByUserUnionIdAndDelFlag(String userUnionId,Integer delFlag);
方法名體現屬性,和傳的參數一定要一致
在編寫代碼的時候,少了 AndDelFlag , 但參數實際是傳了兩個,這樣在處理的時候就直接報錯了。
這個問題比較隱蔽,因爲編譯是沒有任何錯誤的。運行的時候雖然報了這個錯誤,但怎麼看都沒問題。
所以,個人覺得,複雜的情況下,對於JPA 來說,還是使用 @Query 註解比較好,如果出錯了,會同時報SQL的錯誤,這就好定位問題了。