java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem異常


 今天一不小心就碰到了這樣的問題,以前從來沒有碰到過,在網上搜了很多辦法,思路正確,但是還是要根據自己的程序改變。

 一開始寫的是hql語句進行統計每個月的數據,但是試了很久,程序一直提醒hql語句異常,沒辦法,只能修改查詢語句了,就改成了sql語句進行統計。

 錯誤就由此產生了,一發不可收拾啊:

 java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem這個異常解決辦法很簡單,首先要弄懂

hibernate中createQuerycreateSQLQuery 的區別:

前者用的hql語句進行查詢,后者可以用sql語句查詢
前者以hibernate生成的Bean為對象裝入list返回
后者則是以對象數組進行存儲
所以使用createSQLQuery有時候也想以hibernate生成的Bean為對象裝入list返回,就不是很方便
不過createSQLQuery有這樣一個方法可以直接轉換對象
Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class)
XXXXXXX 代表以hibernate生成的Bean的對象,也就是數據表映射出的Bean

 

 hql語句:對每個月的數據進行統計
 String hql = "select sum(sto_Sum) , sum(sto_SumPrice) ,sum(sto_SaleNum) ,sum(sto_SaleNum*sto_SalePrice) from Stock  WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( addDate, '%Y%m' ) ) =1";
            Query query = session.createSQLQuery(hql).addEntity(Stock.class);//關鍵步驟
            list = query.list();
 

所以問題歸根糾結於就是類型不匹配,無法進行轉換,問題就這樣解決了!!!


免責聲明!

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



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