隨筆-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 閱讀(977) 評論(1)  編輯  收藏 所屬分類: Java

          評論:
          # re: hibernate更新數據出現亂碼的問題 2008-01-10 09:49 | bike
          這不算是更新出現的亂碼吧,應該是查詢傳參不對造成的
            回復  更多評論
            
          主站蜘蛛池模板: 龙游县| 利辛县| 文安县| 永善县| 武威市| 杭锦后旗| 黄梅县| 平乐县| 九龙县| 江北区| 绵竹市| 谷城县| 九台市| 敦煌市| 阳春市| 北川| 定南县| 湟中县| 开远市| 鄂伦春自治旗| 金坛市| 茌平县| 黔江区| 边坝县| 银川市| 兴隆县| 孟州市| 洪雅县| 甘洛县| 清水县| 嘉黎县| 阿克陶县| 大城县| 石景山区| 乌审旗| 石楼县| 革吉县| 浠水县| 军事| 阳朔县| 晋州市|