亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

處理Sys refcursor時如何解決java.lang.ClassCastException?

處理Sys refcursor時如何解決java.lang.ClassCastException?

LEATH 2021-12-10 10:16:49
我有以下代碼StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("pkg_p.proc_p");         storedProcedure.getResultList();存儲過程返回一個與以下查詢等效的引用游標 select 1 as id_col, 'My Name ' as name , 1000 as sal from dual;我有一個 pojo 類 MyTable,它相當于查詢的結果集返回類型 public class MyTable { private Long idCol; private String name; private Long sal; /// setter and getters omitted for brevity}for(Object[]row: resultSet)        {MyTable mt = new MyTable ();mt.setIdCol((Long)row[0]);  ///throw class cast exception}如何解決以下錯誤請求處理失??;嵌套異常是 java.lang.ClassCastException: java.math.BigDecimal 不能轉換為 java.lang.Long即使 row[0] 具有 Long 值,如 1,2,10,687 等
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

您不能將 Big Decimal 轉換為 Long,您可以使用它從中獲取 Long 值


row[0].longValue()

如果這不起作用,則將行轉換為大十進制并且


(BigDecimal) row[0].longValue()

所以你的代碼看起來像這樣


mt.setIdCol((BigDecimal)row[0].longValue());

或嘗試將循環更改為


for(BigDecimal[] row : resultSet)

如果你不想使用鑄造


閱讀您的評論后。


    for(Object[] row: resultSet) {

        MyTable mt = new MyTable();

        if(resultSet instanceof BigDecimal) {

            mt.setIdCol((BigDecimal)row[0].longValue());

        } else if (resultSet instanceof String){

            ....

        }

    }


查看完整回答
反對 回復 2021-12-10
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號