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方法即可。

你可能感兴趣的:(Hibernate,query,Class)