日期:2014-05-16  浏览次数:20537 次

拼写的HQL中文乱码问题
问题描述:在HQL语句中如果其中参数是中文,执行后会发现该参数为乱码。

解决方法:可以在hibernate.cfg.xml中加入如下语句:
<property name="hibernate.query.factory_class">

      org.hibernate.hql.classic.ClassicQueryTranslatorFactory

</property>


这样就可以解决传入参数为乱码问题。


这个的确解决了在拼凑的HQL语句中的中文乱码问题,不过如果用hibernate的更新方法时会报错。


原因:hibernate.query.factory_class这个属性是配置hibernate查询翻译器的工厂类,上面配置的是hibernate2.x的,在2.x时hibernate还不支持更新的HQL。在hibernate3.x中默认的翻译器是3的,但是如果拼凑HQL语句中带有中文就会乱码。


解决方法:在写HQL的时候不吧中文参数拼凑进去,用query的setXxx方法即可。