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

Spring Boot 3.3.5(含Hibernate 6.5)升级时H2数据库TIMESTAMP精度校验问题的解决方案咨询

Spring Boot 3.3.5(含Hibernate 6.5)升级时H2数据库TIMESTAMP精度校验问题的解决方案咨询

我们团队正在推进项目从Spring Boot 2.7到3.3.5的升级,这其中也同步完成了Hibernate 6的版本更新。生产环境我们用的是PostgreSQL,本地开发则一直沿用H2数据库。

目前我们的Liquibase变更日志里,列定义是这样的:

<column name="change_date" type="TIMESTAMP(29) WITHOUT TIME ZONE"/>

遇到的问题

我了解到Hibernate 6做了和SQL标准对齐的改动,现在TIMESTAMP的最大精度被限制为TIMESTAMP(9)。这个变化直接导致应用在做schema校验时抛出构建错误:

ERROR: Specified precision exceeds the maximum precision (9)

但因为版本控制和向后兼容的硬性要求,我们没法修改现有的旧Liquibase变更日志。

已尝试的思路

我之前查到一个可行方向是自定义H2方言来处理这个特殊场景,但网上能找到的代码片段基本都是适配Hibernate 5的,我试了好几种方式都没法适配到当前的Hibernate 6版本上。

想请教的问题

有没有同行遇到过一模一样的情况?你们是怎么解决的?有没有推荐的方案——不管是创建适配Hibernate 6的自定义H2方言,还是通过Hibernate的配置来绕过这个精度校验问题,只要不用修改现有Liquibase变更日志就行。

备注:内容来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 09:19:30