jpa更新数据,数据库更新了,但是查询出来的还是更新前的问题,这是因为jpa的一级缓存,查询默认是从缓存中查询的,而不是从DB查询。
解决办法:
repository
update方法上加入@Modifying(clearAutomatically = true)即可,它更新完数据库后会主动清理一级缓存,但我用了好像没什么效果,可能使用方法不对,建议使用下面这个
entityManager对象
通过 em.clear();,在每次查询前清除 JPA 缓存
当使用JPA更新数据后,查询结果未反映最新更改,这是因为JPA的一级缓存机制。为确保从数据库获取最新数据,可以尝试在更新方法上添加@Modifying(clearAutomatically=true),或者在每次查询前调用entityManager对象的clear()方法来手动清除缓存。然而,实际应用中,@Modifying注解可能并未生效,推荐使用entityManager.clear()进行缓存清理。
jpa更新数据,数据库更新了,但是查询出来的还是更新前的问题,这是因为jpa的一级缓存,查询默认是从缓存中查询的,而不是从DB查询。
解决办法:
repository
update方法上加入@Modifying(clearAutomatically = true)即可,它更新完数据库后会主动清理一级缓存,但我用了好像没什么效果,可能使用方法不对,建议使用下面这个
entityManager对象
通过 em.clear();,在每次查询前清除 JPA 缓存
339