GenericJDBCException: Field 'ID' doesn't have a default value异常

问题描述

在保存一个实体是突然抛出了如下异常, 提示ID值为空:

org.hibernate.exception.GenericJDBCException: Field 'ID' doesn't have a default value

实体类的id字段在MySQL中定义为自动递增的类型, 持久化层使用Hibernate进行保存, 定义的注解:

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name ="ID",nullable=false,precision=19,scale=0)
	public java.lang.Integer getId(){
		return this.id;
	}

解决方法

后面检查了下代码应该是没有问题, 于是查看表结构, 因为自增型的需要添加AUTO_INCREMENT 关键字, 发现果然是建表时忘记加了, 于是在ID字段后面进行追加:

CREATE TABLE `p_product_package_balance` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID主键',
  其他字段...
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='分装节点-物料平衡单 ';

然后重新保存, 可以正常保存.

发布了14 篇原创文章 · 获赞 0 · 访问量 742

猜你喜欢

转载自blog.csdn.net/JasonWeng/article/details/105048150