一. 前言
初学Hibernate,经常会犯很多小错误,今天在给一个表修改主键的时候,触发了org.hibernate.id.IdentifierGenerationException异常,现将触发原因和解决方法总结如下
二. 触发原因
在修改主键之前,持久化类的注解是设置的ID为主键,并设置了自增长,代码如下:
@Entity @Table(name="news_inf") public class News { // 消息类的标识属性 @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; private String title; …… }
之后我将主键修改为title,代码如下:
@Entity @Table(name="news_inf") public class News { // 消息类的标识属性 @Id private String title; private Integer id; …… }
可以看到,之前的ID是自增长的,所以不需要手动设置,而我现在将title设置为主键,并且是String类型,无法自增长,也就是需要我们手动设置它的值,如果你在插入数据的时候,没有手动插入title的值,就会触发了org.hibernate.id.IdentifierGenerationException异常,如下图:
三. 解决方法
解决方法非常简单,手动插入主键的值,也就是title的值就可以了,如下图:
请登录之后再进行评论