由JPA 的一個錯誤引起的 java.util.NoSuchElementException: null

程序報:

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的錯誤,這就好定位問題了。

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章