隨筆-208  評論-469  文章-30  trackbacks-0

          hibernate插入數據時沒有一點問題,但更新數據的時候出現亂碼的問題,
          找了好久,后來發現是這個問題。

          hibernate3使用了新的hsql解釋器,使用了antlr。如果在hsql正文中直接使用中
          文的話,會出現亂碼,例如:

          String s = "張三";
          String hsql = "from User where username='"+s+"'";
          List list = session.createQuery(hsql).list;
          這種查詢不會出結果。因為整個語句在被antlr解釋后會有亂碼。

          好的寫法是:
          String s = "張三";
          String hsql = "from User where username=?"
          List list = session.createQuery(hsql).setString(0,s).list;
          這就不會有問題。

          原因:第二種方式,是hibernate在antlr解釋完了以后,再把參數傳入,這個時候
          就不會有亂碼了。


          即使沒有這個問題,也最好不要在sql語句中帶上很多的變量參數。hibernate這種
          思想是對的:sql和變量分離開來,不要把兩者混在一起。


          另外,如果使用hibernate2則不會有上面的問題,因為hibernate2使用的是舊版的
          hsql解釋器。但hibernate2的語法不如hibernate3豐富。

          posted on 2007-05-11 21:44 EricWong 閱讀(985) 評論(1)  編輯  收藏 所屬分類: Java

          評論:
          # re: hibernate更新數據出現亂碼的問題 2008-01-10 09:49 | bike
          這不算是更新出現的亂碼吧,應該是查詢傳參不對造成的
            回復  更多評論
            
          主站蜘蛛池模板: 渭南市| 临安市| 江安县| 磐安县| 措勤县| 黎川县| 阿鲁科尔沁旗| 无为县| 湛江市| 西乌珠穆沁旗| 遵化市| 颍上县| 金湖县| 眉山市| 双流县| 古蔺县| 宁陵县| 孟州市| 璧山县| 茶陵县| 舞阳县| 察哈| 板桥市| 独山县| 荆门市| 瓦房店市| 吉安县| 松桃| 上蔡县| 金坛市| 富宁县| 庐江县| 麻栗坡县| 保德县| 隆安县| 泽库县| 平远县| 晋州市| 肥东县| 年辖:市辖区| 莲花县|