我有两个地图,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的都是不有效的。
发布于 2015-02-18 05:06:47
您应该使用相同的名称空间缓存。
在mapperA中:
< mapper namespace="mapperA">
< cache/>..。
在mapperB中:
< mapper namespace="mapperB">
< cache-ref namespace="mapperA"/>
...https://stackoverflow.com/questions/26781994
复制相似问题