- 浏览: 166823 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
chgliu:
谢谢~很实用
很好的vi教程(接合例子) -
pollyduan:
gameboy4913 写道在MsgContetnt前加入TP ...
长短信实现系列之联通SGIP1.2 -
yanxiaoyu:
String srcXML = "...xml文字. ...
dom4j 中selectNodes选取节点排序问题 -
510372845:
学习了。谢谢。
dom4j 中selectNodes选取节点排序问题 -
haohaoxuexi1311:
settings.xml里面的配置,需要在Nexus里做对应的 ...
【原创】maven + nexus 的settings.xml配置实例
Hibernate與MySQL開發中亂碼解決方案
文章分类:Java编程 关键字: hibernate與mysql開發中亂碼解決方案
本文參考自: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.
問題:hibernate與mysql開發中,新增和修改時出現中文亂碼
解決:
步驟一:將hibernate.cfg.xml中的connection.url值加入characterEncoding=utf8,具體如下:
文件:hibernate.cfg.xml內容
步驟二:在建表時,一定要將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()方法,實現對生成的表格進行字符集設定
文件: CustomerMySQLDialect.java
之後,將hibernate的方言映身到該文件:
文件: hibernate.cfg.xml
這樣就一切OK了,其它的方法沒試過,不過這個我運行過是ok的.
另外說明: 在網上有一些提供以下的方法,不過經過我的驗證,這種方法是不行的,因為Hibernate3中好像沒有hibernate.connection.charSet屬性:
文件: hibernate.cfg.xml
問題:hibernate與mysql開發中,新增和修改時出現中文亂碼
解決:
步驟一:將hibernate.cfg.xml中的connection.url值加入characterEncoding=utf8,具體如下:
文件:hibernate.cfg.xml內容
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first?characterEncoding=utf8</property>
- ...
- <session-factory>
- <hibernate-configuration>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first?characterEncoding=utf8</property> ... <session-factory> <hibernate-configuration>
步驟二:在建表時,一定要將MySQL中的資料表格的欄位字符集設置成utf8的 ,否則會拋出類似如下錯誤:
錯誤訊息:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name' at row 1;
如果是在外部建表,建表語句寫法如下:
- create table `my_table` (
- `Id` int(11) NOT NULL auto_increment,
- `my_column` mediumtext NOT NULL default ”,
- ......
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table `my_table` ( `Id` int(11) NOT NULL auto_increment, `my_column` mediumtext NOT NULL default ”, ...... ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
另外, hibernate的ORM機制允許我們選建實體,再建表,可以通過hibernate內部的hbm2ddl將實體類直接導出成關系表,可以寫一個
hbm2ddl操作類,如下:
java文件:ExportDB.java
- package com.jason.hibernate;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.tool.hbm2ddl.SchemaExport;
- public class ExportDB {
- /**
- * 執行本程式將會建立資料庫表格
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- /**
- * 讀取hibernate配置文件
- * 加上.configure()會去讀取hibernate.hbm.xml文件,如果沒有設定.
- * 則會默認讀取hibernate.properties
- */
- Configuration cfg = new Configuration().configure();
- //讀取配置檔,讀取User.hbm.xml成ddl
- SchemaExport export = new SchemaExport(cfg);
- //生成實體表
- export.create(true, true);
- }
- }
package com.jason.hibernate; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class ExportDB { /** * 執行本程式將會建立資料庫表格 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub /** * 讀取hibernate配置文件 * 加上.configure()會去讀取hibernate.hbm.xml文件,如果沒有設定. * 則會默認讀取hibernate.properties */ Configuration cfg = new Configuration().configure(); //讀取配置檔,讀取User.hbm.xml成ddl SchemaExport export = new SchemaExport(cfg); //生成實體表 export.create(true, true); } }
此時,需要額外對hibernate.cfg.xml進行設定, 先寫一個客戶方言類CustomerMySQLDialect.java,
重載MySQLDialect的getTableTypeString()方法,實現對生成的表格進行字符集設定
文件: CustomerMySQLDialect.java
- package com.jason.hibernate;
- import org.hibernate.dialect.MySQLDialect;
- public class CustomerMySQLDialect extends MySQLDialect {
- /**
- * 重載getTableTypeString()方法
- */
- public String getTableTypeString()
- {
- return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
- }
- }
package com.jason.hibernate; import org.hibernate.dialect.MySQLDialect; public class CustomerMySQLDialect extends MySQLDialect { /** * 重載getTableTypeString()方法 */ public String getTableTypeString() { return " ENGINE=InnoDB DEFAULT CHARSET=utf8"; } }
之後,將hibernate的方言映身到該文件:
文件: hibernate.cfg.xml
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- ...
- <property name="hibernate.dialect">com.jason.hibernate.CustomerMySQLDialect</property>
- ...
- <session-factory>
- <hibernate-configuration>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> ... <property name="hibernate.dialect">com.jason.hibernate.CustomerMySQLDialect</property> ... <session-factory> <hibernate-configuration>
這樣就一切OK了,其它的方法沒試過,不過這個我運行過是ok的.
另外說明: 在網上有一些提供以下的方法,不過經過我的驗證,這種方法是不行的,因為Hibernate3中好像沒有hibernate.connection.charSet屬性:
文件: hibernate.cfg.xml
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- ...
- <property name="hibernate.connection.charSet">utf8(或utf-8)</property>
- ...
- <session-factory>
- <hibernate-configuration>
发表评论
-
Intellj idea 中创建测试 test
2016-10-27 14:19 9005》》在idea中创建测试类有两种方法: 1)鼠标点中类名, ... -
解决 dubbo-admin版本是2.5.4-SNAPSHOT 在jdk8运行报错的方法
2016-09-13 22:17 1442第一天 启动zookeeper成功 编译dubbo2. ... -
TOMCAT7关于支持SERVLET3的新特性 收藏
2010-08-25 15:03 1285TOMCAT7关于支持SERVLET3的 ... -
Apache HTTP服务器 2.0版本文档
2010-08-17 18:14 833Apache HTTP服务器 2.0版本文档 http ... -
让TOMCAT支持软连接
2010-08-16 17:30 4609目的:在web应用中附件上传保存的目录随着时间的积 ... -
HTML表单美化自由定制技术
2010-08-03 09:23 2614HTML表单美化自由定制技术 (http://www.in ... -
关于HashTable,HashMap和TreeMap的几点心得
2010-07-15 16:44 879刚开始看到HashTable,HashMap和 ... -
使用 dom4j 解析 XML
2010-07-15 11:18 911转自:http://www.ibm.com/developer ... -
dom4j 中selectNodes选取节点排序问题
2010-07-15 10:48 8469问题描述: 在dom4j中可以通过xpath过滤 ... -
如何使用server版jvm
2010-07-08 17:16 965下面的这两个文件,尺寸差别很大. ... -
drools5 读书笔记
2010-07-07 16:21 1037drools5 读书笔记,见附件。 -
Proxool配置详解
2010-06-24 16:14 1125from: http://javathinker.blog.c ... -
HTTP响应码与HTTP头标 (收藏)[转]
2010-06-23 19:13 8742009-06-25 21:45 ... -
IntelliJ IDEA 7.0运行缓慢的解决方式
2010-06-23 19:11 1120IntelliJ IDEA 7.0运行缓慢的解决方式 修改 ... -
工作流的20种模式
2010-06-08 08:49 887from : http://tech.ddvip.c ... -
微内核过程引擎的设计思路和构架
2010-06-08 00:06 889http://tech.ddvip.com/2008-09/1 ... -
分享一篇petri网入门文章
2010-05-27 15:29 2840from : http://roclinux.cn/?p=15 ... -
[转载]spring mvc 也能实现 ror 类似的URL路由
2010-05-25 11:45 1528spring mvc 也能实现 ror 类似的URL路由 ... -
[转载]spring mvc & freemarker 版ROR
2010-05-25 11:42 1552转载 : http://wutaoo.iteye.com/bl ... -
用SpringMVC整合 FreeMarker中文乱码解决方案
2010-05-25 11:40 1248from: http://blog.sina.com.cn/s ...
相关推荐
linux 系统下mysql中文乱码问题的解决方案 1、在命令行中输入alter database 数据库名 default character set utf8; 设置字符编码方式 2、 set names utf8; 设置显示方式 3 、jdbc中url的路径后跟上?useUnicode=true...
Tomcat JSP Web 开发中的乱码问题小结 164 第九章 开发Struts 1.x应用 166 9.1 介绍 166 9.2 创建Struts项目 168 9.2.1 创建Web项目 169 9.2.2 加入 Struts开发功能 169 9.3 使用Struts工具 171 9.3.1 Struts配置...
以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload. FormFile的属性来获取表单提交的文件数据。 工程...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的...
系统用MVC设计模式,采用Struts、Hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性...
系统用MVC设计模式,采用Struts、Hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性...