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