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