解决spring jpa中update的坑

 更新时间:2021年08月06日 09:52:58   作者:LvypSir  
这篇文章主要介绍了spring jpa中update遇到的坑及解决方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

spring jpa中update遇到的坑

使用jpa 自己编写update语句,

遇到问题:

1.在同一个service事物中,先执行保存,在执行更新,紧接着执行查询--查询结果为更新前的结果。

2.执行自定义update方法结束后执行查询查出结果依然为update前的结果集

解决问题所在:

自定义update并未清空实体缓存。注解@Modifying加参数eg:@Modifying(clearAutomatically = true)

jpa更新问题记录

使用jpa 去更新:

@Modifying(clearAutomatically = true),@Transactional

它说的是可以清除底层持久化上下文,就是entityManager这个类,我们知道jpa底层实现会有二级缓存,也就是在更新完数据库后,如果后面去用这个对象,你再去查这个对象,这个对象是在一级缓存,但是并没有跟数据库同步,这个时候用clearAutomatically=true,就会刷新hibernate的一级缓存了, 不然你在同一接口中,更新一个对象,接着查询这个对象,那么你查出来的这个对象还是之前的没有更新之前的状态。

注意:

如果说在同个事务方法中,如果有多个更新操作,使用@Modifying(clearAutomatically = true),就会产生在此之前的update操作全部失效,因为把jpa的一级缓存都刷新掉了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Maven Docker镜像使用技巧

    详解Maven Docker镜像使用技巧

    这篇文章主要介绍了详解Maven Docker镜像使用技巧,Maven是目前最流行的Java项目管理工具之一,提供了强大的包依赖管理和应用构建功能。本文以Maven为例介绍了Docker在应用构建中的一些常见技巧。
    2018-06-06
  • 如何解决Project SDK is not defined问题

    如何解决Project SDK is not defined问题

    这篇文章主要介绍了如何解决Project SDK is not defined问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • java获得平台相关的行分隔符和java路径分隔符的方法

    java获得平台相关的行分隔符和java路径分隔符的方法

    不同系统平台下的行分隔符、路径分隔符等常常不同,如何在Java程序获取当前平台的分隔符,以及其他系统相关的状态呢?下面是示例程序,需要的朋友可以参考下
    2014-02-02
  • 浅谈@FeignClient中name和value属性的区别

    浅谈@FeignClient中name和value属性的区别

    这篇文章主要介绍了@FeignClient中name和value属性的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • vue+springboot上传文件、图片、视频及回显到前端详解

    vue+springboot上传文件、图片、视频及回显到前端详解

    一般来说vue可以使用axios或者fetch等ajax库发送文件请求,而springboot则可以使用Spring MVC的方式来处理上传文件请求,下面这篇文章主要给大家介绍了关于vue+springboot上传文件、图片、视频及回显到前端的相关资料,需要的朋友可以参考下
    2023-04-04
  • 通过反射注解批量插入数据到DB的实现方法

    通过反射注解批量插入数据到DB的实现方法

    今天小编就为大家分享一篇关于通过反射注解批量插入数据到DB的实现方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • SpringCloud之微服务容错的实现

    SpringCloud之微服务容错的实现

    这篇文章主要介绍了SpringCloud之微服务容错的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • SpringBoot详细讲解断言机制原理

    SpringBoot详细讲解断言机制原理

    断言Assertion是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是org.junit.jupiter.api.Assertions的静态方法。检查业务逻辑返回的数据是否合理。所有的测试运行结束以后,会有一个详细的测试报告
    2022-06-06
  • SpringBoot整合模板引擎过程代码实例

    SpringBoot整合模板引擎过程代码实例

    这篇文章主要介绍了SpringBoot整合模板引擎过程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot构建Restful service完成Get和Post请求

    SpringBoot构建Restful service完成Get和Post请求

    这篇文章主要介绍了SpringBoot构建Restful service完成Get和Post请求的示例代码,感兴趣的朋友一起看看吧
    2017-08-08

最新评论