org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling

本文讨论了在使用Hibernate进行持久化操作时遇到的IdentifierGenerationException异常,该异常指出idsforthisclassmustbemanuallyassignedbeforecallingsave()。问题源于数据表的id类型设置为自动增长类型,而hibernate.cfg.xml中的id生成方式为assigned。解决方案是将主键生成方式改为native,以便底层数据库自动选择主键生成方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): ***(POJO类,及持久化类名) 

分析及解决: 

你要操作的数据表中的id(即主键)的类型设置成了“自动增长类型”,而在你的 

hibernate.cfg.xml中,id的生成方式是assigned,即 
<id name="id" type="integer"> 
            <column name="id" /> 
            <generator class="assigned" /> 
</id> 
这种搭配是矛盾的! 

主键的assigned生成方式由程序自动生成表的主键,即在你的测试程序中要调用setId()方法,且必 

须在调用save()前调用(或者说在调用save()前必须指定id,其实就是说,主键值不能为空!)。 
把主键的生成方式改为native,它的特征是能够根据底层数据库自动选择主键生成方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值