您的位置:首页 > 其它

关于解决hibernate的一些中文问题

2009-05-08 13:56 375 查看
2情况:

1.hibernate获得数据,写入数据库时,是有经过编码的.我们可以在hibernate的配置文件,URL那里进行配置:

<property name="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8</property>

这样.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)使用占位符:

1.用占位符:

Query query = session

.createQuery("select count(*)

from Privilege p where p.name like ?");

query.setString(0, "%" + name + "%");//

注意这里不能写成setString(0," '%" + name + "%' ";

否则查不出来结果,不能加‘单引号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: