我的环境是Spring 3.0.5+Hibernate 3.2 与MySQL 5.6 WEB项目,在用户模块中创建用户时需要将用户对象写入表中。
在UserDaoImpl中采用getHibernateTemplate().saveOrUpdate(user);实现,英文和数字完全没问题。
中文用户名时,在调试输出的hql语句中,name属性也是正确的,可是写入MySQL表中之后成乱码 ???
查了数据库字符集设置,是UTF-8,没错啊;
我以为应该是hibernate配置的问题吧?
于是试着直接更改表格中的name字段,此时可以正确显示出中文名字。
既然可以查出中文字段,那么,是不是不需要配置了呢?
额,纳闷了啊~~
我又改了我的项目的编码,设置成UTF-8,但是还是同样的问题。
恼了,真恼了~
查了谷歌,发现需要对connection.url进行更改。
用hibernate.cfg.xml进行配置:
<property name="connection.url">jdbc:mysql://localhost:3306/HiberTest?useUnicode=true&characterEncoding=UTF-8</property>
如果用hibernate.properties进行配置
#hibernate.connection.url jdbc:mysql://localhost:3306/HiberTest?useUnicode=true&characterEncoding=UTF-8
终于解决了。
费了我一个早上,走了那么多弯路。
加油,路人共勉!