Hibernate 3 中文乱码的解决(转)

最近在项目中遇到了一个问题,就是做查询的时候,如果用户输入中文的话,明明数据库有这样的记录,却怎么也检索不到结果。作为调试的手段,我把hql语句打印出来,也没有发现什么问题,和预期的一样。甚是郁闷,后来,上网查了一下资料,原来是hibernate3对中文的支持不是太好,需要在hibernate的配置文件中添加一个属性,(这里使用了spring的IOC容器来注入)

<propertyname="hibernateProperties">

<props>

<propkey="hibernate.query.factory_class">

${hibernate.query.factory_class}<!--添加这个属性就可以了-->

</prop>

........................

</property>

org.hibernate.hql.classic.ClassicQueryTranslatorFactory

原因是hibernate在把hql转换成sql语句的时候,出现了乱码(如果有中文的话),按以上的配置的话,就没有什么问题了。还有一个方法就是,使用预编译的hql,然后动态绑定参数。不过这个方法是针对这一个函数本身而言的,如果你是使用Hibernate3而很多查询涉及中文的话,最好使用配置文件的方式,简单。

相关推荐