解決SQL Error: 0, SQLState: S1009,Invalid value for getLong() - 'XX'的問題


內容簡介

今天遇到一個異常,報出消息為SQL Error: 0, SQLState: S1009,Invalid value for getLong() - 'PH',排查問題后,結果令人啞然失笑,也許Ctrl+C,Ctrl+V讓程序員們用的很嫻熟,但Ctrl+V之后還是要細心檢查代碼。

異常

看到這個信息,第一反應是執行SQL出錯了,檢查了參數,數據庫字段的類型定義,沒啥問題,把參數替換后在Navicat中也能執行並有結果

代碼:

@Query(value = "select * from t_water_quality_evaluate where ITMID = :itMid AND WQGLLV < :wqgValue AND WQGULV >= :wqgValue limit 1",nativeQuery = true)
TwaterQualityEvaluate queryByItMidAndValue(@Param(value = "itMid") String itMid, @Param(value = "wqgValue") BigDecimal wqgValue);

字段字義:

執行結果:

這是啥問題呢?我們看信息第二句:Invalid value for getLong() - 'PH',問題出現在itMid這個參數上,我們傳入值"PH",這是個varchar類型,卻使用getLong獲取值,趕緊看看實體類的定義:

看到了嗎?定義了Long類型!改為String后就OK了。

這個問題明顯是在編寫實體類時,itMid的定義復制了上面id的代碼,只改了名稱,沒有改類型造成的!

嗯,Ctrl+V之后,還是要細心一些好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM