隨筆-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
          這不算是更新出現的亂碼吧,應該是查詢傳參不對造成的
            回復  更多評論
            
          主站蜘蛛池模板: 陆良县| 闽侯县| 汨罗市| 连城县| 西乌珠穆沁旗| 化州市| 黔西| 镇安县| 安阳县| 巴青县| 阳高县| 宜兰县| 盐边县| 清苑县| 多伦县| 芦溪县| 万源市| 武清区| 阜南县| 进贤县| 克山县| 江西省| 平遥县| 满洲里市| 苏尼特左旗| 通化县| 瓦房店市| 原平市| 尉犁县| 淅川县| 华容县| 庆安县| 伽师县| 三门县| 竹北市| 株洲市| 商南县| 龙江县| 郓城县| 马龙县| 右玉县|