最近在学习SpringBoot,在调用JpaRepository接口的save方法时报错,如下:
一直在想调用人家封装的方法怎么还会报错,经过查询原来是主键自增策略的问题
我的代码:
可以看到JPA的两个注解@id和@GeneratedValue
@id 标注用于声明一个实体类的属性映射为数据库的主键列。
@GeneratedValue 用于标注主键的生成策略。(问题就出在这里)
JPA为开发人员提供了四种主键生成策略,被定义在枚举类GenerationType中,包含(TABLE , SEQUENCE , IDENTITY , AUTO).
先介绍下这四种策略:
(1)GenerationType.TABLE
使用一个特定的数据库表格来保存主键,持久化引擎通过关系数据库的一张特定的表格来生成