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

Hibernate查询序列缺少start_with列 无法加载ApplicationContext

问题根因

你的Hibernate配置中方言配置错误:当前配置的是org.hibernate.dialect.HSQLDialect(HSQL内存数据库的方言),但实际使用的是PostgreSQL数据库。
Hibernate会根据配置的方言选择对应数据库的元数据提取逻辑,HSQLDialect对应的序列元数据提取器就是报错中的SequenceInformationExtractorHSQLDBDatabaseImpl,这个提取器默认从查询结果中取start_with列作为序列起始值,而PostgreSQL的information_schema.sequences表中序列起始值的列名为start_value,因此会抛出列不存在的异常。

疑问解答

  1. 为什么会调用SequenceInformationExtractorHSQLDBDatabaseImpl#sequenceStartValueColumn?
    因为方言配置为HSQLDialect,Hibernate默认使用HSQL数据库对应的元数据提取实现。Docker测试环境未触发是因为对应测试配置中方言配置正确,或者未开启hibernate.hbm2ddl.auto=validate逻辑,不会走到序列元数据校验的步骤。
  2. 为什么会查询不存在的列?
    start_with是HSQL数据库的序列起始值列名,与PostgreSQL的实际列名不匹配,本质是方言不匹配导致的列名错误。
  3. 配置存在错误,错误点就是hibernate.dialect配置项值与实际使用的数据库不匹配。

解决方案

修改Hibernate配置中的方言为PostgreSQL对应版本的方言即可,你使用的是PostgreSQL 11,修改如下:

// 替换hibernateProperties中原来的HSQLDialect配置行
hibernateProperties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQL11Dialect");

如果后续升级PostgreSQL版本,只需要将方言调整为对应版本即可,比如PostgreSQL 13对应PostgreSQL13Dialect。修改后重启应用即可解决该异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:15:03