为什么在cache.clear()上没有清除Mybatis TransactionalCache

时间:2016-03-10 17:49:56

标签: caching mybatis spring-transactions

引用topic如何通过代码手动清除mybatis缓存我偶然发现了TransactionalCache的问题,这是唯一的MyBatis缓存类型,它通过在每个缓存上调用clear()来清除由sqlSessionFactory.getConfiguration().getCaches

提供

特别是org.apache.ibatis.cache.decorators.TransactionalCache

的成员变量
  private Map<Object, Object> entriesToAddOnCommit;
  private Set<Object> entriesMissedInCache;

正在保存密钥和值,这些密钥和值应该在提交时进行控制,并且尚未缓存。到现在为止还挺好。 在我的选择中,两者都应该在cache.clear()上清除,但负责任的clear方法永远不会被调用

 @Override
  public void clear() {
    clearOnCommit = true;
    entriesToAddOnCommit.clear();
  }

这是一个错误还是有任何解释或建议如何刷新TransactionalCache?

0 个答案:

没有答案