對於jfinal中java.lang.Long cannot be cast to java.lang.Integer的解決方法


@Jfinal 老大提供的解決方法

當數據庫字段為 int 型(有符號int型),但是如果在 sql 中使用了某些函數,jdbc 會自動轉型為 long,例如:select sum(money) from account where accountId = 123。這個行為是 jdbc自動做的,目的是為了防止數據溢出,因為在本例中 money 本來是 int 型,但是 sum(money) 以后很可能數值會超過 java Integer.MAX_VALUE值。另一種 int 自動轉 long 型是因為字段使用是無符號 int 型,這兩種自動轉型都是 jdbc 自動的,jfinal 未做任何干預。至於 int 型可以使用 getStr 讀取出來,那必定是值為 null, 否則肯定會拋出類型轉換異常。

解決的辦法通常兩個:

1:預知可能的轉型,使用正確的類型變量去接收值,例如用 Long變量去接收 select sum(xxx)值。

2:使用 getNumber(attr).intValue() 確切一定得到 Integer 值,或者使用 getNumber(attr).longValue() 確切一定得到 Long 值。


免責聲明!

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



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