如何配置JBoss Hibernate Tools反向工程生成字段注解?
嘿,这个问题我之前帮朋友梳理过,刚好能给你讲明白~
JBoss Hibernate Tools反向工程注解配置解决方案
一、如何让工具默认采用METHOD模式
分两种使用场景来说明配置方法:
1. Eclipse插件版配置
- 打开Hibernate代码生成向导(Hibernate Code Generation)
- 切换到「Exporters」标签页,找到「Domain code (.java)」选项,点击旁边的「Configure...」按钮
- 在弹出的配置窗口里,找到「Access type」下拉框,选择「property」(这就对应METHOD模式),点击确定保存
- 之后再执行反向工程,注解就会默认生成在getter方法上了
2. Maven插件版配置
如果是用maven-hibernate-plugin做反向工程,直接在pom.xml的插件配置里添加<accessType>property</accessType>即可,示例配置如下:
<plugin> <groupId>org.hibernate.tool</groupId> <artifactId>hibernate-tools-maven-plugin</artifactId> <version>5.6.14.Final</version> <executions> <execution> <id>hbm2java</id> <goals> <goal>hbm2java</goal> </goals> <configuration> <!-- 其他配置(如数据库连接、模板路径等) --> <accessType>property</accessType> </configuration> </execution> </executions> </plugin>
二、同时在字段和方法上生成注解
默认情况下Hibernate Tools只支持「字段注解」或「方法注解」二选一,但可以通过自定义Freemarker模板实现双注解生成:
- 找到Hibernate Tools自带的实体类模板(通常命名为
Entity.ftl),复制一份作为自己的自定义模板 - 修改模板内容:把原本只在方法上生成的注解代码,也复制到字段定义的部分(去掉原有的
accessType条件判断) - 配置反向工程时,指定使用你修改后的自定义模板文件
举个简化的模板修改示例:
原本字段生成部分可能是:
<#list properties as prop> private ${prop.type} ${prop.name}; </#list>
修改后变成:
<#list properties as prop> <#if prop.columnAnnotation??> ${prop.columnAnnotation} </#if> private ${prop.type} ${prop.name}; </#list>
这样字段上就会生成@Column这类注解,同时方法上的注解保留,实现双注解效果。
⚠️ 注意:这种双注解模式可能会让Hibernate在映射时产生歧义,建议提前测试确认映射逻辑是否正常,再根据实际需求调整模板细节。
内容的提问来源于stack exchange,提问作者GBS
相关产品推荐
相关产品推荐

