Cannot insert explicit value for identity column in table 'FuLiaoShenGou' when IDENTITY_INSERT is set to OFF.

给数据表插入一条数据,id为自增字段。

报错Cannot insert explicit value for identity column in table 'FuLiaoShenGou' when IDENTITY_INSERT is set to OFF.

原因:

 int 类型

  • int 类型的字段:基本数据类型 int 在 Java 中不能为 null,所以 MyBatis-Plus 会认为该字段已经被初始化(默认为 0),而不会把 id 视作未赋值字段。因此,它会在执行 insert 时,默认将 id 视为 0,而不是 null,然后会插入 0 到数据库。

  • 所以在执行insert方法的时候,id字段是有值的,而且为0,所以才会出现,自增字段不允许设置值的报错

解决方案:int 改为integer

  • 自增 ID 行为:对于自增字段来说,通常是通过 null 来指示数据库自动生成一个 ID。如果你使用的是基本数据类型 int,MyBatis-Plus 会将其视为已初始化,因此它不会发送 null 到数据库,而是发送一个 0。数据库会根据你的表的自增机制生成 ID,但 0 仍然会被插入到数据库中。

posted @ 2024-12-18 16:19  斑马还不想睡  阅读(165)  评论(0)    收藏  举报