社区
Web 开发
帖子详情
Hibernate 在执行 select 语句时发生中文乱码
Java_One
2007-01-22 01:03:55
最近自己在做一个小的Web项目,采用Struts+Hibernate,接近尾声时才发现一个中文乱码问题,
即,在执行查询语句时,中文出现乱码。
我郁闷啊,其他的一些中文操作都很正常,唯独在执行查询时发生乱码,难道Hibernate在生成不同的DML语句时采用不同的编码方式?请高手指教。
我的配置:
Tomcat 5.5
MySQL 5.1
Struts 1.2
Hibernate 3.0
问题解决马上散分
...全文
402
8
打赏
收藏
Hibernate 在执行 select 语句时发生中文乱码
最近自己在做一个小的Web项目,采用Struts+Hibernate,接近尾声时才发现一个中文乱码问题, 即,在执行查询语句时,中文出现乱码。 我郁闷啊,其他的一些中文操作都很正常,唯独在执行查询时发生乱码,难道Hibernate在生成不同的DML语句时采用不同的编码方式?请高手指教。 我的配置: Tomcat 5.5 MySQL 5.1 Struts 1.2 Hibernate 3.0 问题解决马上散分
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Java_One
2007-01-22
打赏
举报
回复
谢谢楼上的几位了,问题已经解决,解决方案就是更换了Hibernate3.jar包,我换成了3.2的。
另外想问个关于DAO层的问题,大家都知道DAO层是非常强大的,在一个稍大点的应用中,
我喜欢把他单独抽象成为一个AbstractDAO,他封装了一切对数据库操作的方法,但有一
点我感觉,就是程序的灵活性可能会有所降低。
如楼上所说,可以用 where username=? 来解决问题,但是现在你的AbstractDAO可能会派不上用场,如:
protected static List findList(String hql) {
List list = null;
try {
AbstractDAO.beginTransaction();
Query query = session.createQuery(hql);
session.flush();
tx.commit();
if (query != null) {
list = query.list();
}
} catch (HibernateException he) {
he.printStackTrace();
log.error("AbstractDAO.findList Exception!", he);
} finally {
HibernateSessionFactory.colse(session);
}
return list;
}
这个方法的可复用性是极高的,你可以在整个应用中都可以用他来执行查找,只要给他个HQL语句,
他就能给你一个相对应的对象集合.
但反过来想,你的这个方法是有固定格式的,你并不能动态的设置你的方法为,
Query q = session.createQuery("from User where username=?");
q.setParameter(0,"张三");
如果是这样,很有可能你的没一个查找都要指定一个类似与这样的方法。
就复用和灵活来说,我们应该使用哪一种方法呢?
yzh963
2007-01-22
打赏
举报
回复
建议更换jar包,我用hibernate时也经常出现jar版本混乱,弄好使一个都不敢轻意换,去官方下载,如果用的HQL应该是楼上几位说的那样
yuzhenbj
2007-01-22
打赏
举报
回复
我也碰见了,以上都不是解决办法;最根本的解决办法就是更换jar包,使用3.0.5到3.1之间的版本
如果这么改:hibernate.query.factory_class org.hibernate.hql.classic.ClassicQueryTranslatorFactory
在执行删除时有问题!
如果换成3.2的jar,回报session is closed...的错误(好像3.2中自动关闭session)
Jeff的后花园
2007-01-22
打赏
举报
回复
有兩种解決方案
第一种,數據庫支持語言可以設置成UTF-8,具體選哪裏,以後說,免得摟主TJ了該貼。
第二种,使用捆綁數據的方式,有點像我上面那位說的
jowood_qq
2007-01-22
打赏
举报
回复
你是用的HQL吗?
如果是,那你应该用 form table as a where a.username=?
把问号给替换掉就可以了
AreamArgentateOfWing
2007-01-22
打赏
举报
回复
好象是
hibernate.query.factory_class org.hibernate.hql.classic.ClassicQueryTranslatorFactory
我记得好象是这个...
AreamArgentateOfWing
2007-01-22
打赏
举报
回复
改方言.
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
Java_One
2007-01-22
打赏
举报
回复
补充(接上):
更确切的说应该是where子句的时候出现乱码,如:where username='张三',在执行时就变成了where username='????????',
注:页面上接过来的中文很正常
Java学习笔记-个人整理的
{12.13}DML
语句
}{175}{section.12.13} {12.13.1}insert}{175}{subsection.12.13.1} {12.13.2}create}{175}{subsection.12.13.2} {12.13.3}rownum}{175}{subsection.12.13.3} {12.13.4}update}{176}{subsection....
hibernate
中文动态查询
语句
乱码问题
hibernate
中文动态查询
语句
乱码问题
Hibernate
4入门基础学习视频课程
Hibernate
介绍。
Hibernate
的Hello World、Xml配置形式、Annotation配置形式。
Hibernate
原理的模拟,重点讲思路,代码不全部实现,
Hibernate
的基本配置
Hibernate
核心接口介绍,...
Hibernate
查询(HQL
语句
的使用)。
hibernate
向oracle插入中文
时
的乱码问题——修改oracle字符集
简单(啰嗦)描述一下问题:这几天刚开始玩
hibernate
,先试了一下CRUD操作,配合sqlplus在看效果...同样的,在sqlplus这边,我手动sql插入一条中文记录,是可以正常显示的,但是如果用
hibernate
查出来,就是乱码。 ...
Hibernate
插入mysql数据库
中文乱码
解决
如果
Hibernate
将中文插入mysql数据库,调用
select
语句
中文显示乱码,则mysql的编码方式设为gbk,注意这里是小写,不用重新安装mysql数据库,将MySQL Server 5.1目录下的my.ini配置文件里的所有default-character-set
Web 开发
81,092
社区成员
341,718
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章