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

Hibernate创建User实体报IdentifierGenerationException异常求助

问题原因及解决方案

1. 实体类缺失无参构造方法

Hibernate底层通过反射实例化@Entity标注的实体类,强制要求实体类提供公共无参构造方法。你当前的User类仅自定义了带参构造方法,Java编译器不会自动生成默认无参构造,Hibernate初始化实体实例时无法正确映射字段,会识别到主键loginU为空。
修复方案:在User类中添加无参构造:

public User() {
}

2. 未显式声明主键生成策略(可选但推荐)

String类型的主键Hibernate默认会采用assigned生成策略(即要求业务侧手动赋值),但为了规避不同Hibernate版本默认策略的差异,建议在@Id注解下显式声明生成策略,避免歧义:

@Id
@Column(name = "loginU")
@GeneratedValue(strategy = GenerationType.ASSIGNED)
private String loginU;

3. 缺失主键字段的getter/setter方法

如果你的Hibernate配置默认采用属性访问策略(通过get/set方法读写字段),缺失loginU的getter、setter方法会导致Hibernate无法读取到你已经赋值的主键值,也会触发该报错。建议补充所有成员字段的getter和setter方法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:02