You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate 6逆向工程(hbm2java)配置java.util.Date类型方法

解决Hibernate 6逆向工程生成java.util.Date而非java.sql.Timestamp的问题

核心问题原因

Hibernate 6的逆向工程工具调整了类型映射逻辑:仅配置hibernate-type只会指定Hibernate内部的映射类型,生成实体类字段时,工具会默认根据JDBC类型匹配对应的java.sql类型(比如TIMESTAMP对应java.sql.Timestamp)。需要显式指定java-type来强制生成java.util.Date,同时配置temporalType自动添加@Temporal注解。

具体配置步骤

  1. 修正hibernate.reveng.xml的类型映射
    更新逆向工程配置文件,为JDBC的DATE和TIMESTAMP类型指定java-type和对应的temporalType属性:

    <hibernate-reverse-engineering>
        <type-mapping>
            <!-- 映射JDBC DATE到java.util.Date,自动添加@Temporal(TemporalType.DATE) -->
            <sql-type jdbc-type="DATE" java-type="java.util.Date" hibernate-type="java.util.Date">
                <column-property name="temporalType" value="DATE"/>
            </sql-type>
            <!-- 映射JDBC TIMESTAMP到java.util.Date,自动添加@Temporal(TemporalType.TIMESTAMP) -->
            <sql-type jdbc-type="TIMESTAMP" java-type="java.util.Date" hibernate-type="java.util.Date">
                <column-property name="temporalType" value="TIMESTAMP"/>
            </sql-type>
        </type-mapping>
    </hibernate-reverse-engineering>
    
  2. 确认Maven插件配置正确性
    确保maven-antrun-plugin中的hbm2java任务启用ejb3和jdk5参数(你的现有配置已满足),同时Hibernate Tools依赖版本与Hibernate 6主版本保持一致:

    <dependency>
        <groupId>org.hibernate.tool</groupId>
        <artifactId>hibernate-tools-ant</artifactId>
        <version>6.6.2.Final</version>
    </dependency>
    

验证效果

执行逆向工程命令:

mvn antrun:run@hbm2java

生成的实体类字段将符合预期:

@Temporal(TemporalType.TIMESTAMP)
@Column(name="created")
private Date created;

额外注意事项

  • 检查hibernate.properties中是否存在覆盖类型映射的配置项,避免冲突
  • 如果使用了自定义逆向工程策略类,确保其逻辑没有修改类型映射规则

内容的提问来源于stack exchange,提问作者fanfavorite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 09:25:14