在使用SpringBoot时遇到的异常总结(持续更新...)

2023-09-18 13:47:41


因为平时在写SpringBoot项目时,总是会遇到各种各样的异常,因此在这里记录一下,以便以后再遇到相同的错误时能够有一个参考

异常

MyBatis

java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails

时间:2023年09月18日

这个错误实际上并不是coding的问题,而是在向数据库中添加数据时出现的问题,更准确地说是外键约束的问题

  • squad表
    在这里插入图片描述
    在这里插入图片描述

  • member表
    在这里插入图片描述

可以看到member表中的字段group_id是一个外键(不考虑user_id这一字段)
但是我在向数据库member表中插入数据时,插入的内容是:
在这里插入图片描述
可以发现,向member表插入的数据中groupId=0,但是在squad表中并不存在id=0,所以出现上述异常
还有一个地方:为什么表的名字是squad而不是group/groups,因为group/groups都是mysql的关键字,具体请参考这篇文章:记录使用mybatis-plus时遇到的错误

Mybatis-Plus查询语句无故自动加条件

2023年09月18日

正常的查询语句:
在这里插入图片描述
在这里,查询语句是:

 SELECT COUNT(*) AS total FROM stakeholder WHERE deleted = 0 AND (user id = ?)

但是,这次遇到的问题是出现了错误的查询语句,导致没有办法进行正常的查询:
在这里插入图片描述
出现了错误的查询语句:

SELECT COUNT(*) AS total FROM stakeholder WHERE user_id = 0 AND (user_id = ?)

之所以会出现这样的问题,有两个方面的原因(因为我自己遇到了这两个方面的错误):

  1. 因为在DAO实体类中某一个成员属性是这样定义的:private int userId;,问题就在这里,int 类型的默认值为0,此处应该采用 Integer ,封装类,Integer的默认值为 null ,改为Integer后QueryMapper要搜索的其值就不是0了而是null,即对当前数据库中的表进行全查,而不是查0
  2. 因为我用到了逻辑删除,我自己将逻辑删除的注解@TableLogic放到了private Integer userId,导致出现了这样的问题

参考文献

1、MyBatis添加数据报错Cannot add or update a child row: a foreign key constraint fails
2、Mybatis-Plus查询语句无故自动加条件

更多推荐

JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

一、什么是BeanShell?BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,JMeter性能测试工具也充分接纳了BeanShell解释器,封装成了可配置的BeanShell前置和后置处理器,分别是BeanShellPreprocessor(BeanShell预处理程

MySQL表的增删改查(基础)

一、新增(Create)--创建一张学生表DROPTABLEIFEXISTSstudent;CREATETABLEstudent(idINT,snINTcomment'学号',nameVARCHAR(20)comment'姓名',qq_mailVARCHAR(20)comment'QQ邮箱');1.单行数据+全列插入-

Windows网络服务综测刷题

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。座右铭:低头赶路,敬事如仪个人主页:网络豆的主页​​​​​前言本章将会讲解Windows网络服务的刷题一.刷题在WindowsServer2016系统中,通过添加Web服务器(IIS)角色并进行正确配置,可以提供()应用服务。(选择两项)AB使用wind

Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

项目说明随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要求;通过电子化平台提高招投标工作的公开性和透明性;通过电子化招投标,使得招标采购的质量更高、速度

效率工具3-计算机网络工具

查看各个状态的tcp连接情况netstat-n|awk‘/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}’/^tcp/正则表达式匹配netstat命令输出的匹配部分,即以"TCP"开始的行{++S[$NF]}对于符合条件的每一行,awk命令将使用数组S来计算每种连接状态的连接数$NF代

Javascript小案例--树形菜单(菜单数据为对象)

理论上菜单层级可以无限多,因为是递归渲染。gif效果图:代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>

看盘也要学?伦敦金看盘技巧

看盘是伦敦金投资的基础,没有好的看看技巧,不能盯住市场价格的变化,我们就没办法在市场出现机会的时候就入场,也就是说,我们会错过好的交易机会,最终导致自己的交易不能盈利,甚至发生亏损。下面我们就来讨论一下如何在伦敦市场中学习看弹的技巧。当市场出现大量买入,出现大阳线的时候,很可能是有市场的资金出场。我们会观察到,市场会出

SpringTask任务调度和声明式事务配置

是哪段话激励着你不断向前摆脱逆境?一,SpringTaskxml写法SpringTask已经纳入到spring核心技术里面了,直接导入spring的上下文坐标就好了<dependencies><dependency><groupId>org.springframework</groupId><artifactId>sp

生产发版前准备【经验分享给萌新程序员】

经验分享自从当了码农,已经不知道有多少个日日夜夜熬夜到凌晨三四点了。不知道大家有没有想过,生产上线发布新版本到凌晨三、四点都有可能是哪些原因呢?下面我将分享下自己以前跟进生产版本发布的经验,经验丰富的老前辈们肯定都比我清楚(可忽略此篇文章~哈哈~)。这篇文章可能更适合萌新程序员体质。争取不熬夜工作(只能熬夜玩乐,不能熬

kafka ack确认机制

Kafka使用ACK(Acknowledgment)确认机制来确保消息在生产者和消费者之间的可靠传递。这个机制确保消息在被认为已成功发送或处理之前不会被丢失。Kafka的ACK确认机制有三个级别:acks=0:这是最快速的确认级别,也是最不可靠的。生产者发送消息后不会等待任何确认,直接将消息添加到分区的副本中,并认为消

汽车电子系统总线LIN通信协议精要

汽车电子系统总线LIN通信协议精要文章目录汽车电子系统总线LIN通信协议精要简介LIN信号的物理层LIN总线收发器LIN通信协议LIN的主机和从机LIN报文帧结构同步间隔段(Breakfield)同步段(Syncfield)受保护的帧ID(ProtectedIdentifierfield)应答数据段(Datafield

热文推荐