最近在用到Hibernatetools生成java文件的时候发现中文乱码的问题,看了下官方文档,怎么也没找到关于编码的问题,没办法,从jboss给的svn上把源码下下来研究一下http://anonsvn.jboss.org/repos/hibernate/tags/TOOLS_3_2_4_GA/tools/src/java/,看了一番之后,在TemplateProducer.java这个类中,发现了写文件的方法:
public void produce(Map additionalContext, String templateName, File destination, String identifier, String fileType, String rootContext) {
String tempResult = produceToString( additionalContext, templateName, rootContext );
if(tempResult.trim().length()==0) {
log.warn("Generated output is empty. Skipped creation for file " + destination);
return;
}
FileWriter fileWriter = null;
try {
th.ensureExistence( destination );
ac.addFile(destination, fileType);
log.debug("Writing " + identifier + " to " + destination.getAbsolutePath() );
fileWriter = new FileWriter(destination);
fileWriter.write(tempResult);
}
catch (Exception e) {
throw new ExporterException("Error while writing result to file", e);
} finally {
if(fileWriter!=null) {
try {
fileWriter.flush();
fileWriter.close();
}
catch (IOException e) {
log.warn("Exception while flushing/closing " + destination,e);
}
}
}
}
终于明白了为什么他不支持编码了,注意这两句
fileWriter = new FileWriter(destination);
fileWriter.write(tempResult);
jdk1.6文档中是这么定义FileWriter的
用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在
FileOutputStream
上构造一个 OutputStreamWriter。
也就是说FileWriter采用默认的与平台有关的编码,查看操作系统编码如下:
String encoding = System.getProperty("file.encoding");
System.out.println("Default System Encoding:" + encoding);
我的电脑显示的是GBK,问题可能出在这,至于为什么,我就不知道了。解决办法
1.等Hibernatetools出新版本
2.改Hibernatetools源码
3.自己写自动生成工具
4.写一个自动文件格式转化的工具类FileEncodingUtils,在调用hibernatetools之后再调用这个转化类
2的改发
OutputStreamWriter out = new OutputStreamWriter(new
FileOutputStream(destination),"UTF-8");
out.write(tempResult);
本人采用的是方法4.
另外提供Hibernatetools最新的源码,未改过的啊。
分享到:
相关推荐
4. **模型类生成**:Hibernate Tools可以根据现有数据库模式自动生成对应的Java实体类,包括getter和setter方法,以及@Entity和@Table注解,大大减少了手动编码的工作量。 5. **映射文件(HBM.xml)**:工具可以生成...
《HibernateTools 3.2.4 Beta1:高效数据库管理和对象关系映射工具》 HibernateTools是Java开发者的重要辅助工具,它为Hibernate框架提供了一系列实用的集成开发环境(IDE)插件和命令行工具,极大地简化了数据操作...
尽管具体更新日志未在提供的信息中列出,但通常这样的版本升级会针对之前版本存在的问题进行改进,增强用户体验,并保持与最新Hibernate框架的兼容性。 2. **核心功能介绍:** - **可视化ORM设计**:开发者可以...
HibernateTools是Java开发领域中一个非常重要的辅助工具,它专为使用Hibernate框架的开发者设计,提供了各种实用的功能,极大地提升了开发效率。Hibernate是一个流行的对象关系映射(ORM)框架,它允许开发者用面向...
Hibernate Tools 可以验证 Hibernate 配置文件,及时发现并解决配置错误,避免因配置问题导致的运行时异常。 8. **性能分析**:对于性能优化,Hibernate Tools 提供了查询分析工具,可以检测和分析查询性能,帮助...
8. **版本兼容性**:需要注意的是,不同版本的Hibernate Tools可能与不同版本的Hibernate和Eclipse IDE存在兼容性问题,因此在使用时应确保所有组件的版本匹配。 总之,Hibernate Tools是Hibernate开发中的得力助手...
《HibernateTools 3.2.4:高效数据库管理和对象关系映射工具》 HibernateTools是Java开发者们在使用Hibernate框架时的重要辅助工具集,它极大地简化了与Hibernate相关的任务,如逆向工程、持久化类的生成、数据库...
《MyEclipse Hibernate Tools:助力XML文件高效编写》 在IT行业中,开发人员常常需要处理大量的数据持久化工作,而Hibernate作为一款强大的Java对象关系映射(ORM)框架,极大地简化了这一过程。然而,手动编写...
通过以上步骤,我们可以明显地感受到Hibernate Tools带来的便利性,它极大地提高了开发效率,减少了手动编码的工作量,使得开发者可以更专注于业务逻辑的实现。理解并熟练掌握这个工具,对于提升Java开发中的生产力...
它提供了对Hibernate ORM框架的强大支持,能够自动化许多繁琐的手动编码任务,从而提高开发效率。 1. **代码生成**: Hibernate Tools的一个核心功能是根据Hibernate的映射文件(hbm.xml)自动生成对应的Java持久...
3. **生成POJO及映射文件**:通过HibernateTools,可以自动根据数据库表结构生成对应的POJO类以及Hibernate映射文件(XML格式或注解形式),从而大大减少了编码工作量。 ### 环境搭建 文档还提及了必要的软件环境...
对hibernate-tools-3.4.0.CR1源码做了适当修改,修正了正文编码;可用于反转数据库生成实体类;
2. 自定义模板:利用Hibernate-tools的模板引擎,开发者可以定制自己的代码生成规则,以满足特定的编码风格和项目需求。 3. 版本选择:根据项目的具体需求和依赖环境,选择合适的Hibernate-tools版本,避免版本不...
总之,理解并掌握Hibernate Tools的模板机制以及处理字符编码问题的方法,对提升开发效率和代码质量大有裨益。在日常工作中,我们应该养成良好的编码习惯,确保每个环节的字符编码一致,以避免不必要的乱码问题。...
Hibernate Tools for eclipse ...代码自动产生后还需要你根据自己的业务逻辑检查一下,并按你的DAO架构完成,Hibernate Tools到这里已经帮你完成的大量编码工作。 【编辑推荐
解决这个问题的关键在于确保整个开发环境的一致性,包括IDE的编码设置、项目的编码设置以及`Hibernate-tools`的执行参数。通常,我们需要将所有相关配置设置为UTF-8编码。在使用`Hibernate-tools`生成或更新`hbm.xml...
### hibernate生成实体类 #### 简介 在软件开发过程中,ORM(对象关系映射)技术被广泛应用于数据库操作之中,它能够将数据库表结构与程序中的对象进行映射,极大地简化了数据访问层的编码工作。Hibernate作为一款...