MyEclipse中Hibernate Reverse Engineering不可用,首要原因是未切换至Hibernate视图(Window → Open Perspective → Other → Hibernate),且需确保项目已正确安装Hibernate Facet;功能入口位于DB Browser表右键的Generate Entities子菜单,非Java或Enterprise视图下可见。

MyEclipse 2017+ 版本中 Hibernate Reverse Engineering 菜单项找不到
不是插件没装,而是视图没切对——这个功能只在 Hibernate 视图 下可用,Java 或 Enterprise 视图里右键根本不会出现 Hibernate Reverse Engineering 选项。
- 必须先切换到 Hibernate 视图(Window → Open Perspective → Other → Hibernate)
- 然后在
DB Browser面板里展开你的数据库连接,选中具体表(支持多选),再右键 - 如果仍不显示,检查项目是否已安装 Hibernate Facet:右键项目 → Configure Facets → 确认
Hibernate已勾选并配置完成 - MyEclipse 2019 起部分版本将该入口移至
DB Browser表上右键的Generate Entities子菜单,而非顶层项
生成的 hbm.xml 文件没被自动注册进 hibernate.cfg.xml
MyEclipse 默认不自动更新主配置文件里的 <mapping> 元素,靠人工补漏容易遗漏,尤其表多时。
Eclipse IDE 是一款由 Eclipse 基金会管理的开源、跨平台集成开发环境。其核心基于 Java 构建,通过强大的插件架构可扩展支持 C/C++、Python、PHP 等多种编程语言。它提供丰富的代码编辑、调试和重构工具,并紧密集成 Git、Maven 等现代开发工具链,是全球众多开发者首选的 Java 开发利器。
- 反向工程向导第 2 步(“Hibernate Reverse Engineering” 对话框)中,务必勾选
Update Hibernate configuration file - 若勾选后仍无效,检查
hibernate.cfg.xml文件路径是否为默认位置(src/hibernate.cfg.xml或src/main/resources/hibernate.cfg.xml);路径不对会导致写入失败但无报错 - 生成后手动验证:打开
hibernate.cfg.xml,确认每张表对应一行<mapping resource="com/example/User.hbm.xml"/> - 注意大小写和路径斜杠方向——Windows 下用
/,不是\;包名与文件名需完全匹配
id 字段生成策略错配成 assigned 而非 native 或 identity
MySQL 的 AUTO_INCREMENT 主键或 Oracle 的序列,在反向工程中常被识别为手动赋值,导致插入失败或主键冲突。
- 在反向工程向导第 3 步(“Table Selection & Configuration” 页面),双击目标表进入详细配置
- 找到
ID generator列,根据数据库类型选择:- MySQL:选
identity - PostgreSQL / HSQLDB:选
identity或sequence - Oracle:选
sequence,并在Sequence name栏填实际序列名(如SEQ_USER_ID) - 通用兼容:选
native(Hibernate 自动适配)
- MySQL:选
- 不改这里,生成的
<id>段会是<generator class="assigned"/>,运行时save()不触发自增 - 生成后立即检查
User.hbm.xml中的<id name="id" type="long"><generator class="identity"/></id>是否正确
实体类字段名与数据库列名大小写/下划线映射异常
比如数据库列 user_name 生成为 userName 是对的,但有时变成 username 或 user_Name,导致查询时 property not found 错误。
- 根源在
hibernate.reveng.xml的命名策略未生效,或 MyEclipse 忽略了它 - 最稳妥做法:在反向工程前,手动创建
hibernate.reveng.xml放在项目根目录或src下,内容包含:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-reverse-engineering-3.0.dtd"> <hibernate-reverse-engineering> <table-filter match-name=".*"/> <schema-selection match-schema="your_schema_name"/> <table name="user_info"> <column name="user_name" property="userName"/> </table> </hibernate-reverse-engineering> - 向导中第 3 步点击
Next前,确认Use hibernate.reveng.xml if present已勾选 - 别依赖“自动驼峰”——MyEclipse 的转换逻辑简单粗暴,遇到
user_id_type可能生成userIdType或useridtype,必须显式声明
.hbm.xml 文件里分散的 generator、property 和 mapping 配置——它们不会主动告诉你哪里错了,只会在第一次 session.save() 时突然抛出 IdentifierGenerationException 或 PropertyAccessException。

















