springDataJpa入门教程
-
springDataJpa入门教程(1)-基于springBoot的基本增删改查
-
springDataJpa入门教程(2)-Specification动态条件查询+排序+分页
-
springDataJpa入门教程(3-1)-基于EntityManager原生sql多表联合查询+动态条件查询+分页
-
springDataJpa入门教程(3-2)-基于EntityManager原生sql多表联合查询+动态条件查询+分页返回自定义实体类对象
-
springDataJpa入门教程(4)-Example单表动态条件查询+分页
-
springDataJpa入门教程(5)-单表动态条件查询+分页
-
springDataJpa入门教程(6)-多表动态条件查询+分页
-
springDataJpa入门教程(7)-基于springDataJpa投影(Projection)返回自定义实体类对象
-
springDataJpa入门教程(8)-JPA EnableJpaAuditing 审计功能
-
springDataJpa入门教程(9)-spring jpa实体属性类型转换器AttributeConverter的用法
-
springDataJpa入门教程(10)-JPA使用过程中遇到的坑及解决方法
springDataJpa入门教程(10)-JPA使用过程中遇到的坑及解决方法
- jpa缓存导致无法查询到更新后的数据
在开发中遇到这样一种情况,对某条记录做了查询,然后又对某个字段单独进行更新,更新后立即查询更新后的结果,查询的数据是更新前的。这个问题是由于JPA的缓存导致的。
解决方法:通过@Modifying注解的clearAutomatically类清除缓存,这样更新后JPA就只能去数据库获取数据。但是clearAutomatically会对性能有一定的影响,所以clearAutomatically属性应该视情况使用。示例如下:
@Modifying(clearAutomatically = true)
@Query("update User set name = :name where id = :id")
int updateUserNameById(@Param("name") String name,@Param("id") Long id);
更多内容可以参考这篇文章:JPA&hibernate缓存导致更新后查询不到最新的数据