原文:http://www.blogjava.net/pauliz/archive/2009/11/13/302162.html
有同学需要修改后的Hibernate Tools
整个tool我就不上传了,需要的请到http://downloads.sourceforge.net/jboss/HibernateTools-3.2.4.GA-R200905070146-H18.zip 或者 https://files.cnblogs.com/eggbucket/hibernate-tools.zip下载。
hibernate-tools.zip
是修改后的jar,解压后覆盖plugins\org.hibernate.eclipse_3.2.4.GA-R200905070146-H18\lib\tools\hibernate-tools.jar
template.zip 或者 https://files.cnblogs.com/eggbucket/template.zip
是ftl模板,Hibernate Code Generation Configuration中Main选项卡最下面Template directory可指定使用自定义的模板
template.zip只是在默认的模板上做了少量修改,抛砖引玉了,如果各位有更好的模板,也希望能为大家共享一下
最近做项目时,使用Hibernate Tools 3.2.4生成entity和hbm.xml,但默认情况下,DB中的comments没法生成到javadoc和xml中,改了templates倒是有注释了,但却是乱码,心里一直耿耿于怀...(这不符合咱一直强调的编码规范不是?最主要的是人懒,有时用entity不想再找文档)。在网上找了半天,大多说是freemarker编码设置问题,但不管怎么设置,都没一点效果,决定自己动手。下了源码,查到原因,人家压根就没处理中文问题。记录一下处理过程。
ftl是freemarker模板,可以在jar包外使用,java和properties重新打包替换hibernate-tools.jar,如果是eclipse-plugins,jar包在plugins\org.hibernate.eclipse_3.2.4.GA-R200905070146-H18\lib\tools\hibernate-tools.jar
pojo\PojoFields.ftl
pojo\PojoPropertyAccessors.ftl
org\hibernate\tool\hbm2x\TemplateProducer.java
org\hibernate\tool\hbm2x\jtidy.properties
wrap=180
补充:
无法取得MySQL5 Table的Comments,修改org.hibernate.cfg.reveng.dialec.MySQLMetaDataDialect
重载getTables方法
外键默认生成List,修改org.hibernate.cfg.JDBCBinder
。。。
这时候,我突然想到个问题,既然是通过JDBC获取数据库元信息,没有获取到,应该是数据库厂商JDBC驱动有问题,为什么要去修改hibernate-tools的源码呢?
最后我找到了MySQL驱动的这个bug(http://bugs.mysql.com/bug.php?id=65213),并从该bug页找到了解决方案:
修改MySQL JDBC驱动URL,在其后追加:“?useUnicode=true&characterEncoding=UTF-8&useInformationSchema=true”即可。