适用版本:v3.3.8+;
特征:清除缓存后,第一次数据加载正确,后续数据就出现了不一致的情况;
原因:系统中使用缓存,系统会优先查找缓存数据,如果缓存中没有才进行数据库查询;第一次查询时Repository返回数据,并且将数据放在内存中,返回数据的引用,后续代码通过这个引用对数据进行修改,导致缓存中的数据被修改;第二次再查询由于缓存中已经有数据,所以直接返回缓存中的数据,但返回的是数据已经被第一次查询后作了修改,跟第一次返回就产生了差异。
解决方法:将Repository返回的数据进行深层次复制,不使用原数据引用,避免缓存原数据被修改。
- 如果是Object对象,使用以下代码进行复制:
- 如果是列表对象,使用以下代码进行复制:
例子:
作者:hugh 创建时间:2025-01-23 11:28
最后编辑:hugh 更新时间:2025-05-28 10:33
最后编辑:hugh 更新时间:2025-05-28 10:33