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

使用@Inheritance插入报错:ID列为GENERATED ALWAYS标识列

错误原因分析
  • 数据库规则限制:你的PostgreSQL数据库中,对应Base实体的foo表的id列被定义为GENERATED ALWAYS AS IDENTITY类型,这种类型的列禁止手动插入任何值,只能由数据库自动生成自增ID。

  • 代码逻辑冲突:Base抽象类里,id字段被初始化了默认值0,同时标注了@GeneratedValue(strategy = GenerationType.IDENTITY)。当Hibernate执行INSERT操作时,会把这个默认的0作为id的值尝试写入数据库的identity列,这直接违反了PostgreSQL的限制,因此触发报错。

  • 补充说明:GenerationType.IDENTITY的作用是让数据库自动生成ID,但因为你给id字段设置了默认值0,Hibernate会误认为你要手动指定ID,所以在INSERT语句中包含了id字段的赋值操作,最终触发了数据库的错误提示。

内容的提问来源于stack exchange,提问作者four-eyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:32:39