• 中文
    • English
  • 注册
  • 查看作者
    • org.hibernate.id.IdentifierGenerationException的触发原因和解决方法

      一.  前言

      初学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异常,如下图:

      org.hibernate.id.IdentifierGenerationException的触发原因和解决方法

      三.  解决方法

      解决方法非常简单,手动插入主键的值,也就是title的值就可以了,如下图:

      org.hibernate.id.IdentifierGenerationException的触发原因和解决方法

    • 0
    • 2
    • 1
    • 2.4k
    • 请登录之后再进行评论

      登录
    • 0
      打赏了10金币。
    • 0
      打赏了939金币。
    • 赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: