2情况:
1.hibernate获得数据,写入数据库时,是有经过编码的.我们可以在hibernate的配置文件,URL那里进行配置:
这样.hibernate将数据提交给数据库时,就会编码成utf-8
2.hibernate打印出来的带中文的SQL语句中,中文乱码问题.
这里在网上找了几个解决办法:
(2.1)
Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,不过,Hibernate2.1的查询翻译器也依然 存在。在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。例如:
(1)选择Hibernate3.0的查询翻译器:
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
(2)选择Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory
也就是在配置文件仲设置:
<property name="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property> (PS:我在项目中用的HIBERNATE是3,尝试了3的查询翻译器无效,改用2的查询翻译器,通过.)
(2.2)使用占位符:
本文介绍了两种解决Hibernate中文乱码的方法:一是通过配置数据库连接URL来确保数据以UTF-8编码写入;二是调整查询翻译器并使用占位符处理SQL语句中的中文。
138

被折叠的 条评论
为什么被折叠?



