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

Hibernate 6.2.x是否改变DDL生成方式?升级后初始化脚本报错

Hibernate 6.2.x升级后初始化SQL脚本执行失败问题

问题背景

项目包含初始化SQL脚本,示例语句如下:

INSERT INTO FROB VALUES(1, 'Foo', 2);

注:我清楚不指定插入列是不良实践,但目前无法修改此问题。

在Hibernate 6.2系列之前的所有版本中,该脚本均可正常运行。将Hibernate从6.1.7.Final升级到6.2.7.Final后,脚本持续执行失败,报错提示'Foo'无法转换为整数,这表明Hibernate生成的DDL中列的顺序发生了变化。以下是H2数据库的错误堆栈片段:

Caused by: org.h2.message.DbException: Data conversion error converting "Foo" [22018-220]
    at org.h2.message.DbException.get(DbException.java:212)
    at org.h2.value.ValueStringBase.getInt(ValueStringBase.java:133)
    at org.h2.value.Value.convertToInt(Value.java:1596)

当前通过常规Jakarta Persistence属性生成数据库schema,配置如下:

<properties>
    <property name="jakarta.persistence.schema-generation.database.action" value="drop-and-create"/>
    <property name="jakarta.persistence.sql-load-script-source" value="META-INF/init_script.sql"/>
    <!-- etc. -->
</properties>

未配置其他特殊设置,且已查阅Hibernate 6.2迁移指南,未找到相关说明。

相关线索

发现Hibernate的HHH-17065问题与此相关,尽管我并未使用复合主键,但能确认Hibernate 6.2.x在DDL生成的列排序策略上做了重大调整,核心实现位于ColumnOrderingStrategyStandard.java类中。

提问

是否有办法影响Hibernate 6.2.x生成的DDL结果,恢复升级前的列顺序?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:07:27