JPA 多对多级联保存报错 Caused by: java.sql.SQLException: Field 'id' doesn't have a default value

测试用户和角色级联保存
报错的原因就是说主键id没用设置默认值也没用自动增长,但是我用户和角色表的生成策略都是程序控制,所以就很奇怪。
第二天在测试发现了,中间表没用维护id的生成策略,所以这个id时中间表的,太过粗心了。
解决方法:
给中间表Id字段加上 @GeneratedValue(strategy = GenerationType.IDENTITY);
并且再数据库设置改字段自动增长。

四种策略:
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。

你可能感兴趣的:(JPA 多对多级联保存报错 Caused by: java.sql.SQLException: Field 'id' doesn't have a default value)