栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Boot Data JPA-修改更新查询-刷新持久性上下文

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot Data JPA-修改更新查询-刷新持久性上下文

我知道这不是您问题的直接答案,因为您已经构建了修复程序并在Github上启动了pull请求。谢谢你!

但是我想解释一下您可以使用的JPA方法。因此,您想更改符合特定条件的所有实体,并更新每个实体的值。通常的方法是加载所有需要的实体:

@Query("SELECt * FROM Email e where e.active = true and e.expire <= NOW()")List<Email> findExpired();

然后遍历它们并更新值:

for (Email email : findExpired()) {  email.setActive(false);}

现在,hibernate知道所有更改,如果事务完成或您

EntityManager.flush()
手动调用,它们会将它们写入数据库。我知道如果您有大量的数据条目,这将无法正常工作,因为您将所有实体都加载到了内存中。但这是使hibernate实体高速缓存,第二级高速缓存和数据库保持同步的最佳方法。

这个答案是否说“ @Modifying”注释没有用?没有!如果您确保修改后的实体不在本地缓存中(例如,只写应用程序),则此方法只是解决之道。

仅作记录:您不需要

@Transactional
存储库方法。

仅用于记录v2:该

active
列看起来像直接与相关
expire
。那么,为什么不
active
完全删除并仅
expire
在每个查询中查找呢?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号