Hibernate與MySQL開發中亂碼解決方案

本文介绍了解决Hibernate与MySQL开发过程中出现的中文乱码问题。主要通过配置hibernate连接URL中的字符编码为UTF-8,并设置数据库表字段字符集为UTF-8来解决。同时提供了一个自定义方言类实现字符集设定。

本文參考自:http://blog.tremend.ro/2007/08/14/how-to-set-the-default-charset-to-utf-8-for-create-table-when-using-hibernate-with-java-persistence-annotations/,感謝提供者spostelnicu.

 

Question: hibernate與mysql開發中,新增和修改時出現中文亂碼
Answer:  
步驟一:將hibernate.cfg.xml中的connection.url值加入characterEncoding=utf8,具體如下:

 

步驟二:在建表時,一定要將MySQL中的資料表格的欄位字符集設置成utf8的 ,否則會拋出類似如下錯誤:
錯誤訊息:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name' at row 1;

如果是在外部建表,建表語句寫法如下:

另外, hibernate的ORM機制允許我們選建實體,再建表,可以通過hibernate內部的hbm2ddl將實體類直接導出成關系表,可以寫一個
hbm2ddl操作類,如下:
java文件:ExportDB.java

 

此時,需要額外對hibernate.cfg.xml進行設定, 先寫一個客戶方言類CustomerMySQLDialect.java,
 重載MySQLDialect的getTableTypeString()方法,實現對生成的表格進行字符集設定

 java文件: CustomerMySQLDialect.java

之後,將hibernate的方言映身到該文件:
文件: hibernate.cfg.xml

 

這樣就一切OK了,其它的方法沒試過,不過這個我運行過是ok的.
另外說明: 在網上有一些提供以下的方法,不過經過我的驗證,這種方法是不行的,因為Hibernate3中好像沒有hibernate.connection.charSet屬性:
文件: hibernate.cfg.xml

 

 

如有不对或不足之处,望予以指正...不胜感激...

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值