hibernate下hql與sql查詢結果的問題

2021-08-01 15:19:34 字數 753 閱讀 2127

hibernate可使用物件查詢、hql語句查詢、sql原生語句查詢等方式。

遇到問題:dao層查詢的結果裝入list,返回biz,action,jsp後用el表示式遍歷顯示,但出了異常,異常內容為格式轉換。查詢的內容從前到後有id,name等,異常就是id為string不能轉為integer,注釋掉id後又報name不能轉啥啥啥。沒有具體丟擲位置。

查詢後發現dao層使用的是sql查詢方式,原生語句一般要寫select部分指出查詢字段,並且查詢結果不會自動封裝進實體類,這就是問題所在。

解決方法:改用hql語句,這樣就可以用el表示式打點取值了。想用sql可以手動在業務層封裝,不過麻煩。物件查詢也可以,但是我想自定義查詢條件所以用的語句。

總結:hibernate的內建方法很方便,增刪改都是一行兩個點的事,注意傳遞來的要是物件,並且必須有序列值,改的時候物件中所有屬性都會改,所以業務層呼叫修改時最好先查出來整個物件,修改其中要改的屬性後再update

hql語句查詢的結果可以自動封裝進實體類,但自己寫了select後會破壞封裝。如何保持封裝網上都有,可以select new 物件等等。

原生sql在語句中封裝不好,查詢的結果會是object格式的陣列,需要用list來接受,之後直接getindex,object[n]取值,或者手動這樣封裝進實體類使用,比較麻煩但是靈活。這已經和jdbc差不多了吧。

於是,這次遇到的問題就是查詢結果是object陣列,但當做封裝好的實體類世界在el表示式中使用,在我不知道的情況下object強轉型別時出錯。也許這就是mybatis的優勢?

hibernate多表查詢HQL

innerjoin 內連線 left outerjoin 左外連線 right outerjoin 右外連線 fulljoin 全連線,並不常用 sql中的條件用on即 leftjoin.on.hql中的條件用with即 leftjoin.with.語句innerjoin,left outerjoi...

Hibernate之HQL語言查詢

建立hibernateutils類,便於直接獲取session package com.utils import org.hibernate.session import org.hibernate.sessionfactory import org.hibernate.cfg.configurat...

hibernate 的 HQL學習筆記

hql之佔位查詢 1.方案一 匿名佔位符 test public void test02 2.方案二 name 引數名稱繫結 test public void test03 3.方案三 name 引數名稱繫結 物件屬性 test public void test04 hql語句之動態查詢 1.動態查...