首页 > 技术文章 > 主键字段报错doesn't have a default value (mybatis)

zzzqi 2020-07-11 22:19 原文

主键字段报错doesn't have a default value (mybatis)

最近导师交给我一个项目,今天调试新功能的时候发现在执行数据库插入操作的时候,主键报错

补充说明一下,workorder_number做主键,char类型。

在控制台查看代码执行到插入语句的时候其对应的sql语句

发现没有插入workorder_number这个字段,其他的字段全都插入了。到这里可以初步判断应该是在插入的时候主键这个字段没有被选中插入。确定了发现,接下来一步步排查,在检查数据库中表的映射没有出错、表的实体类没有问题、字段和变量名没有写错之后,最后检查mybatis的配置的时候,我发现了问题所在。

原来是主键已经设置好了数据库ID自增,那么在向表中插入新记录的时候就不需要我们自己填写主键的值,那么也就很理所应当的我们的主键的字段就不会出现在上文中的sql语句里面。所有问题的解决方案就是:在表中新增个“id”字段,做主键,int类型,自增。那么问题就解决了

原来的workorder_number字段也出现在了sql语句里面,插入成功。

在此记录下我犯的这个错误,在接手老项目的时候,务必搞清楚其相关的配置方式,避免产生不必要的错误。

推荐阅读