Caching 为什么在cache.clear()上未清除Mybatis TransactionalCache

Caching 为什么在cache.clear()上未清除Mybatis TransactionalCache,caching,mybatis,spring-transactions,Caching,Mybatis,Spring Transactions,在参考如何通过代码手动清除mybatis缓存时,我遇到了一个问题,这是唯一一个通过调用clear()在sqlSessionFactory.getConfiguration().getCaches提供的每个缓存上未清除的mybatis缓存类型 特别是org.apache.ibatis.cache.decorators.TransactionalCache private Map<Object, Object> entriesToAddOnCommit; private Set&

在参考如何通过代码手动清除mybatis缓存时,我遇到了一个问题,这是唯一一个通过调用
clear()
sqlSessionFactory.getConfiguration().getCaches提供的每个缓存上未清除的mybatis缓存类型

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

  private Map<Object, Object> entriesToAddOnCommit;
  private Set<Object> entriesMissedInCache;

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

顺便说一句,清除所有其他数据缓存(如SerializedCache或LruCache gets invokedErm),手动清除似乎与整个事务系统紧密相连的缓存真的是一个好主意吗?在我看来,缓存似乎只用于提交和刷新事件(通过TransactionalCacheManager)。@FlorianSchaetz不幸的是,这是必要的,因为在mybatis之外(但在同一事务/连接内)有编写sql语句的功能,调用这些语句时也应刷新缓存。Imho甚至TransactionalCacheManager都应该清除其缓存,否则entriesToAddOnCommit会保存在提交时写入缓存的值,这些值不再有效。仅供参考,我的本地缓存范围设置为语句,而不是会话。
 @Override
  public void clear() {
    clearOnCommit = true;
    entriesToAddOnCommit.clear();
  }