问题描述:
在某一方法中对使用自己写的update方法A对象进行修改操作,且在这个方法返回之前对A对象进行查询。发现得到的数据是A对象修改之前的数据,而并非A对象修改之后的数据。这是什么原因造成的呢?
答:缓存问题。
解决:
改和删除操作时需要添加@Modifying和@Transactional
- @Modifying标识该操作是修改操作并设置@Modifying(clearAutomatically=true) 会刷新一级缓存,得到最新的数据
- @Transactional声明事务性操作,Transactional(readOnly = false)可进行修改操作
如图:
参考链接