最近在專案中遇到了乙個問題,就是做查詢的時候,如果使用者輸入中文的話,明明資料庫有這樣的記錄,卻怎麼也檢索不到結果。作為除錯的手段,我把hql語句列印出來,也沒有發現什麼問題,和預期的一樣。甚是鬱悶,後來,上網查了一下資料,原來是hibernate3對中文的支援不是太好,需要在hibernate的配置檔案中新增乙個屬性,(這裡使用了spring的ioc容器來注入)
$........................
org.hibernate.hql.classic.classicquerytranslato***ctory
原因時hibernate在把hql轉換成sql語句的時候,出現了亂碼(如果有中文的話),按以上的配置的話,就沒有什麼問題了。還有乙個方法就是,使用預編譯的hql,然後動態繫結引數。不過這個方法是針對這乙個函式本省而言的,如果你是使用hibernate3而很多查詢涉及中文的話,最好使用配置檔案的方式,簡單。
初探Hibernate3原始碼 讀取配置檔案
依照個人推測,要實現orm框架,關鍵是如何拼湊sql語句再通過jdbc來進行對資料庫的訪問,另外將資料庫返回的資料記錄封裝成對應的類也是必不可少的。那麼實現orm框架的基本思路如下 1,讀取xml配置檔案,獲取連線資料庫的配置資訊和對映檔案 2,讀取類與表的對映檔案,儲存對映資訊 3待續。眾所周知,...
Hibernate3中的更新與刪除
在hibernate2中對某個表進行更新和刪除,必須先把它load出來,在後更改,然後再儲存。這個過程對於批量操作或者對於表關係比較複雜的情況,是很複雜的。在hibernate3中hql語句中已經支援update 和delete 了 但是要注意的是update和delete的hql不是物件導向的了。...
hibernate3中的離線查詢1
假設要通過stuname查詢乙個學生student記錄,可以如下 detachedcriteria dc detachedcriteria.forclass student.class dc.add restrictions.like stuname stuname,matchmode.anywhe...