• 中文
    • 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.7k
  • 请登录之后再进行评论

    登录
  • 0
    打赏了10金币。
  • 0
    打赏了939金币。
  • 单栏布局 侧栏位置: