随笔-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 阅读(968) 评论(1)  编辑  收藏 所属分类: Java

评论:
# re: hibernate更新数据出现乱码的问题 2008-01-10 09:49 | bike
这不算是更新出现的乱码吧,应该是查询传参不对造成的
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: