hibernate更新数据出现乱码的问题

hibernate更新数据出现乱码的问题

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丰富。

你可能感兴趣的:(hibernate更新数据出现乱码的问题)