java运行save但数据库没有成功插入数据?

从昨晚就在调试一段代码,非常奇怪,明明打断点,已经执行save,但偏偏数据库就一直为空,让人丈二和尚摸不着头脑啊!抓狂中……
我的java代码如下:

FileAssociatedEntity fileAssociated = new FileAssociatedEntity();
                fileAssociated.setFileId(fileId);
                fileAssociated.setType(type);
                fileAssociated.setAssociateTableId(associateTableId);
                fileAssociated.setAttachmentField(attachmentField);
                utils.fileAssociatedService.save(fileAssociated);

就是上传附件后,文件id与主表的id作关联,再插入记录到关联表里,断点都已成功执行save完毕,也没有报错,可偏偏去看数据库却未insert半条数据,气人啊!

后来,听网友的分析,就去看控制台的sql语句执行,到底有没有执行save语句,仔细一看,确实有执行insert语句,如下:

==>  Preparing: INSERT INTO FILE_ASSOCIATED ( ID, ASSOCIATE_TABLE_ID, file_id, ATTACHMENT_FIELD, TYPE ) VALUES ( ?, ?, ?, ?, ? ) 
==> Parameters: 83f1d0b311b82b84d3e45d225639ff80(String), 165(Integer), 839db327a4618530a3da1f02d6f63665(String), firmCapacity(String), tecs(String)
<==    Updates: 1

后来,仔细一看,insert完毕后,竟然有对此表执行过delete语句,呀,难怪噢,就是说,数据库插入成功后,后续又被删除了。人家执行了,不是没执行……

这个语句主要用来判断在insert之前,如果有该主表关联过则先删除,再新插入,而因为我有多加了个字段作判别,在查询时却忘记作筛选,于是就都删除了。赶紧在这句里多加一个查询条件,如下:

List<FileAssociatedEntity> hisAssociate = utils.fileAssociatedService.list(new QueryWrapper<FileAssociatedEntity>()
                .eq("associate_table_id", associateTableId).eq("attachment_field", attachmentField));
        //物理删除
        if(!ObjectUtils.isEmpty(hisAssociate)){
            utils.fileAssociatedService.removeByIds(hisAssociate.stream().map(s -> s.getId()).collect(Collectors.toList()));
        }

最终,插入数据库成功!

友友们,看来以后跟数据库有关的问题,还是要多看看控制台的执行sql语句,十分有效啊!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值