Oracle数据库@GeneratedValue(IDENTITY)无法自动生成ID的问题排查
Oracle + Spring Boot 本地@GeneratedValue(IDENTITY)失效排查方向
检查Oracle数据库兼容性参数
- 本地连接的Oracle实例需开启
IDENTITY_COLUMN支持,确保compatible参数值为12.0.0或以上,执行SQL验证:SELECT name, value FROM v$parameter WHERE name = 'compatible'; - 对比同事数据库的该参数值,确认是否一致。
- 本地连接的Oracle实例需开启
核对目标表结构
- 确保表
ODF_SMS_NTF的sms_ntf_id字段为自增列,执行SQL查看:SELECT column_name, identity_column FROM user_tab_columns WHERE table_name = 'ODF_SMS_NTF'; - 若
identity_column返回'NO',说明本地表未配置自增,需同步同事的表结构。
- 确保表
验证Hibernate方言配置
- 确认配置文件中Hibernate方言为Oracle 12c专用版本:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect - 避免使用不支持IDENTITY策略的旧版方言(如
OracleDialect),检查本地配置是否与同事一致。
- 确认配置文件中Hibernate方言为Oracle 12c专用版本:
清理IDEA缓存与重新构建
- 执行
File -> Invalidate Caches...并重启IDEA,清除本地编译缓存。 - 执行Maven的
Clean+Install命令,确保本地依赖与编译文件完全同步。
- 执行
排查OJDBC驱动版本冲突
- 通过IDEA的Maven依赖树查看OJDBC实际加载版本,确认是OJDBC8且无其他版本驱动干扰。
- 对比同事的依赖树,排除版本不一致问题。
核对JPA全局配置
- 检查
spring.jpa.hibernate.ddl-auto配置,若本地设置为none或validate,需确认表结构已同步;若同事使用update,需排查是否因DDL自动更新差异导致表结构不同。 - 检查是否存在自定义
hibernate.cfg.xml等配置文件,覆盖了全局的IDENTITY策略相关设置。
- 检查
内容的提问来源于stack exchange,提问作者M.KUL
相关产品推荐
相关产品推荐

