首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MyBatis -嵌套结果在缓存刷新后不会更新。

MyBatis -嵌套结果在缓存刷新后不会更新。
EN

Stack Overflow用户
提问于 2014-11-06 14:33:01
回答 1查看 771关注 0票数 5

我有两个地图,mapperA和mapperB。

mapperA具有结果映射A,它只包含结果元素(简单属性),并缓存在自己的命名空间中。

mapperB有结果映射B,它包含与A (select语句findById)的关联,并且也缓存在自己的命名空间中。

问题是:

  • mapperB.findById (加载B和相关的A-两者都被缓存)
  • mapperA.findById (不缓存select执行A)
  • mapperA.update (更新一些A-缓存A会被刷新)
  • mapperA.findById (选择执行加载的A被更新)
  • mapperB.findById -这是一个问题-不执行选择,因为B是缓存的。但是它与A实例一起缓存。此实例不反映更新。应该执行select /缓存查找来加载当前的A实例。

我的问题是:

在缓存两个结果时,如何使关联正常工作。

备注:

我知道我可以强制A和B映射程序使用单个缓存命名空间,所以当更新A时,它将刷新所有缓存的A和B查询。但是考虑到我有10个A实例--它们每隔几分钟就更新一次。和1百万B实例-这些都是每天更新一次。每次A更新时,刷新所有B的都是不有效的。

EN

回答 1

Stack Overflow用户

发布于 2015-02-18 05:06:47

您应该使用相同的名称空间缓存。

在mapperA中:

代码语言:javascript
复制
< mapper namespace="mapperA">

< cache/>

..。

在mapperB中:

代码语言:javascript
复制
< mapper namespace="mapperB">

< cache-ref namespace="mapperA"/>

...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26781994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档