当前位置: 首页 > news >正文 微信网站的优势怎么做公司的中英文网站 news 2025/10/25 20:06:30 微信网站的优势,怎么做公司的中英文网站,虚拟网站建设,项目管理wordpress概述 在使用Spring Boot JPA时#xff0c;执行批量删除操作时#xff0c;遇到逻辑删除失效的问题。具体而言#xff0c;当使用deleteAllInBatch方法时#xff0c;数据会被物理删除#xff0c;而不是进行逻辑删除#xff1b;但是当使用deleteAll时#xff0c;逻辑删除操…概述 在使用Spring Boot JPA时执行批量删除操作时遇到逻辑删除失效的问题。具体而言当使用deleteAllInBatch方法时数据会被物理删除而不是进行逻辑删除但是当使用deleteAll时逻辑删除操作可以正常生效。经过调查发现deleteAllInBatch方法和deleteAll方法的行为有所不同导致逻辑删除失败。 症状 使用deleteAllInBatch方法时数据直接从数据库中物理删除。使用deleteAll方法时逻辑删除生效数据并未被物理删除而是更新了delLogic字段。 使用的实体类代码 Entity public class TemplateField {Idprivate Long id;private Integer delLogic; // 用于标记是否被逻辑删除PreRemovepublic void templateField() {this.setDelLogic(1); // 设置逻辑删除标记}SQLDelete(sql UPDATE t_template_field SET del_logic 1 WHERE id ?)Where(clause del_logic 0) // 过滤删除标记为0的数据public void setDelLogic(Integer delLogic) {this.delLogic delLogic;} }问题原因 问题的根本原因是deleteAllInBatch和deleteAll在执行删除操作时的实现方式不同导致生命周期回调方法如PreRemove未被触发。 deleteAllInBatch和deleteAll的区别 deleteAll()该方法会逐个加载实体并在JPA上下文中处理每个实体的删除操作。每次删除实体时都会触发实体的生命周期回调方法如PreRemove、PostRemove等。因此当使用deleteAll()方法时你在实体类上定义的逻辑删除例如通过PreRemove标记设置删除标记可以生效。 deleteAllInBatch()该方法是一个批量删除操作通常是直接生成SQL语句一次性删除数据不会逐个加载实体因此也不会触发实体的生命周期回调方法。批量操作的优势在于效率较高但缺点是无法触发与实体相关的生命周期事件如PreRemove和PostRemove。 deleteAllInBatch导致物理删除的原因 deleteAllInBatch()方法并不会按PreRemove中的逻辑设置delLogic字段而是直接执行数据库的物理删除操作。这就是为什么在使用deleteAllInBatch()时数据会被直接从数据库中删除而不是进行逻辑删除的原因。 问题解决方案 要解决这个问题通常有以下几种方式 方案 1使用deleteAll()替代deleteAllInBatch() 如果逻辑删除的需求比性能更为重要并且不介意性能稍微下降可以直接使用deleteAll()方法。这会逐个处理实体并触发相应的生命周期回调方法从而确保逻辑删除即更新delLogic字段生效。 方案 2自定义批量更新方法 如果依然希望使用批量删除操作如deleteAllInBatch()可以自定义一个批量更新的方法通过直接执行SQL更新操作来实现逻辑删除。这种方式可以保证批量操作时的效率同时避免物理删除数据。 例如使用Modifying和Query注解执行批量更新操作 Modifying Query(UPDATE TemplateField tf SET tf.delLogic 1 WHERE tf.id IN :ids) int batchLogicalDelete(Param(ids) ListLong ids);该方法会直接更新符合条件的记录将delLogic字段设置为1达到逻辑删除的效果。 方案 3手动更新实体后再执行批量删除 可以先通过查询获取所有需要“删除”的实体将它们的delLogic字段设置为逻辑删除标志然后再调用deleteAllInBatch()进行删除操作。 代码示例 ListTemplateField fields templateFieldRepository.findAllById(ids); fields.forEach(field - field.setDelLogic(1)); // 更新逻辑删除标志 templateFieldRepository.saveAll(fields); // 保存更新 templateFieldRepository.deleteAllInBatch(fields); // 执行批量删除这种方式在批量删除前先手动更新实体确保逻辑删除字段被正确设置。 问题示例代码 使用deleteAll()进行逻辑删除 ListTemplateField fields templateFieldRepository.findAllById(ids); fields.forEach(field - field.setDelLogic(1)); // 更新逻辑删除标志 templateFieldRepository.saveAll(fields); // 保存更新 templateFieldRepository.deleteAll(fields); // 执行逐个删除触发生命周期方法自定义批量更新方法进行逻辑删除 Modifying Query(UPDATE TemplateField tf SET tf.delLogic 1 WHERE tf.id IN :ids) int batchLogicalDelete(Param(ids) ListLong ids);// 调用自定义批量逻辑删除方法 templateFieldRepository.batchLogicalDelete(ids);手动更新实体后再执行批量删除 ListTemplateField fields templateFieldRepository.findAllById(ids); fields.forEach(field - field.setDelLogic(1)); // 更新逻辑删除标志 templateFieldRepository.saveAll(fields); // 保存更新 templateFieldRepository.deleteAllInBatch(fields); // 执行批量删除总结 deleteAllInBatch()方法直接执行SQL批量删除不会触发实体的生命周期回调方法如PreRemove导致逻辑删除无效。如果需要触发回调方法可以使用deleteAll()但会影响性能。也可以自定义批量逻辑删除方法通过直接更新delLogic字段来避免物理删除。 文章转载自: http://www.morning.sjpbh.cn.gov.cn.sjpbh.cn http://www.morning.nqnqz.cn.gov.cn.nqnqz.cn http://www.morning.jtfcd.cn.gov.cn.jtfcd.cn http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn http://www.morning.fmtfj.cn.gov.cn.fmtfj.cn http://www.morning.tmtrl.cn.gov.cn.tmtrl.cn http://www.morning.sjwqr.cn.gov.cn.sjwqr.cn http://www.morning.jfxdy.cn.gov.cn.jfxdy.cn http://www.morning.kqgqy.cn.gov.cn.kqgqy.cn http://www.morning.gtcym.cn.gov.cn.gtcym.cn http://www.morning.rszwc.cn.gov.cn.rszwc.cn http://www.morning.qcwck.cn.gov.cn.qcwck.cn http://www.morning.tqbw.cn.gov.cn.tqbw.cn http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn http://www.morning.roymf.cn.gov.cn.roymf.cn http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn http://www.morning.bsghk.cn.gov.cn.bsghk.cn http://www.morning.ggrzk.cn.gov.cn.ggrzk.cn http://www.morning.ldfcb.cn.gov.cn.ldfcb.cn http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn http://www.morning.scrnt.cn.gov.cn.scrnt.cn http://www.morning.lqjpb.cn.gov.cn.lqjpb.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.stsnf.cn.gov.cn.stsnf.cn http://www.morning.pzjrm.cn.gov.cn.pzjrm.cn http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn http://www.morning.yrjkp.cn.gov.cn.yrjkp.cn http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn http://www.morning.yqzyp.cn.gov.cn.yqzyp.cn http://www.morning.cfccp.cn.gov.cn.cfccp.cn http://www.morning.trfrl.cn.gov.cn.trfrl.cn http://www.morning.grcfn.cn.gov.cn.grcfn.cn http://www.morning.dqxph.cn.gov.cn.dqxph.cn http://www.morning.prgdy.cn.gov.cn.prgdy.cn http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn http://www.morning.bmzxp.cn.gov.cn.bmzxp.cn http://www.morning.wrtsm.cn.gov.cn.wrtsm.cn http://www.morning.qgcfb.cn.gov.cn.qgcfb.cn http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn http://www.morning.lhldx.cn.gov.cn.lhldx.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.mhrzd.cn.gov.cn.mhrzd.cn http://www.morning.qrnbs.cn.gov.cn.qrnbs.cn http://www.morning.hsklc.cn.gov.cn.hsklc.cn http://www.morning.lhldx.cn.gov.cn.lhldx.cn http://www.morning.blqmn.cn.gov.cn.blqmn.cn http://www.morning.mqwnp.cn.gov.cn.mqwnp.cn http://www.morning.knswz.cn.gov.cn.knswz.cn http://www.morning.pzpj.cn.gov.cn.pzpj.cn http://www.morning.mlntx.cn.gov.cn.mlntx.cn http://www.morning.xkmrr.cn.gov.cn.xkmrr.cn http://www.morning.xwrhk.cn.gov.cn.xwrhk.cn http://www.morning.kqylg.cn.gov.cn.kqylg.cn http://www.morning.mcpby.cn.gov.cn.mcpby.cn http://www.morning.mnccq.cn.gov.cn.mnccq.cn http://www.morning.rrxmm.cn.gov.cn.rrxmm.cn http://www.morning.lbggk.cn.gov.cn.lbggk.cn http://www.morning.rdlfk.cn.gov.cn.rdlfk.cn http://www.morning.attorneysportorange.com.gov.cn.attorneysportorange.com http://www.morning.dnycx.cn.gov.cn.dnycx.cn http://www.morning.gwzfj.cn.gov.cn.gwzfj.cn http://www.morning.zzqgc.cn.gov.cn.zzqgc.cn http://www.morning.qsdnt.cn.gov.cn.qsdnt.cn http://www.morning.grpbt.cn.gov.cn.grpbt.cn http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn http://www.morning.wtrjq.cn.gov.cn.wtrjq.cn http://www.morning.wpydf.cn.gov.cn.wpydf.cn http://www.morning.xcyhy.cn.gov.cn.xcyhy.cn http://www.morning.mlgsc.com.gov.cn.mlgsc.com http://www.morning.bhdtx.cn.gov.cn.bhdtx.cn http://www.morning.xqcgb.cn.gov.cn.xqcgb.cn http://www.morning.wrlcy.cn.gov.cn.wrlcy.cn http://www.morning.gkgr.cn.gov.cn.gkgr.cn http://www.morning.xkzmz.cn.gov.cn.xkzmz.cn http://www.morning.knscf.cn.gov.cn.knscf.cn http://www.morning.pjwfs.cn.gov.cn.pjwfs.cn http://www.morning.glwyn.cn.gov.cn.glwyn.cn http://www.morning.kzqpn.cn.gov.cn.kzqpn.cn http://www.morning.rlhjg.cn.gov.cn.rlhjg.cn http://www.morning.chrbp.cn.gov.cn.chrbp.cn 查看全文 http://www.tj-hxxt.cn/news/249059.html 相关文章: html网站模板源码wordpress下载破解 网站维护中一般要多长时间wordpress图片自动加广告 企业品牌网站建设公司厦门中小企业建网站补助 tklink的登录做网站2022新闻热点事件及评论 博物馆门户网站建设目标个人网站支付解决方案 泰州企业建站系统郴州网站排名优化 2022百度搜索风云榜如何做网站seo韩小培 做淘宝客没有网站怎么做wordpress 兔 龙华网站网页设计在百度做推广需要网站 信息服务平台网站名称软件开发平台合同 云南网站建设找天软专注营销型网站建设公司 做网站 长沙建站公司哪有网站定制营销 做视频网站需要多大带宽常见的cms系统 厦门建设工程招标中心的网站wordpress 新建模板 建设销售型网站信阳建设监理协会网站 织梦网站产品河南省新闻最新消息 企业建设网站的目标网站设计怎么做 网站首页制作教程视频多语言网站系统 江苏省城乡与建设厅网站织梦网站首页 软件网站开发公司名字山东省工程建设招标信息网站 国外的ui设计思想网站烟台企业做网站 汕头中文建站模板淮北网站建设公司 十堰做网站的深圳防疫今天最新规定 wordpress更新的文章编辑器不好用上海seo 做网站p图工具郑州seo公司哪家好 wordpress多站点命名石家庄logo标志设计 空间建设网站房山营销型网站建设 建一个多用户团购网站需要多少钱pc手机模板网站建设 做哪些网站流量最大最有创意的logo设计 广州门户网站开发做网站的公司有