Ehcache 按需从数据库重新加载(手动刷新)
Ehcache reload from DB on demand (manual refresh)
我想清除缓存 (ehcache) 并从数据库重新加载(我想手动刷新以满足我们的某些要求)。为此,我使用了一种方法
CacheManager.removalAll();
之后我尝试了两种方法,但我得到了如下所述的相同错误(这里可能有问题)
1)
for (String cacheName : cacheNames) {
cache = lvCacheMgr.addCache(cacheName);
}
2)
for (String cacheName : cacheNames) {
lvCacheMgr.addCache(cacheName);
cache = lvCacheMgr.getCache(name);
cache.initialise();
}
然后我得到如下错误
Caused by: java.lang.IllegalStateException: The org.hibernate.cache.StandardQueryCache Cache is not alive.
at net.sf.ehcache.Cache.checkStatus(Cache.java:2199)
at net.sf.ehcache.Cache.get(Cache.java:1354)
at org.hibernate.cache.EhCache.get(EhCache.java:74)
at org.hibernate.cache.StandardQueryCache.get(StandardQueryCache.java:105)
at org.hibernate.loader.Loader.getResultFromQueryCache(Loader.java:2163)
at org.hibernate.loader.Loader.listUsingQueryCache(Loader.java:2126)
at org.hibernate.loader.Loader.list(Loader.java:2096)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
CacheManager.removeAll
是一种从 CacheManager
中删除 Cache
的方法,而不是清除 Cache
内容的方法。
如果您想稍后执行此操作,则需要调用 Cache.removeAll
,您可以在其中从 CacheManager
本身访问所有缓存。
我想清除缓存 (ehcache) 并从数据库重新加载(我想手动刷新以满足我们的某些要求)。为此,我使用了一种方法
CacheManager.removalAll();
之后我尝试了两种方法,但我得到了如下所述的相同错误(这里可能有问题)
1)
for (String cacheName : cacheNames) {
cache = lvCacheMgr.addCache(cacheName);
}
2)
for (String cacheName : cacheNames) {
lvCacheMgr.addCache(cacheName);
cache = lvCacheMgr.getCache(name);
cache.initialise();
}
然后我得到如下错误
Caused by: java.lang.IllegalStateException: The org.hibernate.cache.StandardQueryCache Cache is not alive.
at net.sf.ehcache.Cache.checkStatus(Cache.java:2199)
at net.sf.ehcache.Cache.get(Cache.java:1354)
at org.hibernate.cache.EhCache.get(EhCache.java:74)
at org.hibernate.cache.StandardQueryCache.get(StandardQueryCache.java:105)
at org.hibernate.loader.Loader.getResultFromQueryCache(Loader.java:2163)
at org.hibernate.loader.Loader.listUsingQueryCache(Loader.java:2126)
at org.hibernate.loader.Loader.list(Loader.java:2096)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
CacheManager.removeAll
是一种从 CacheManager
中删除 Cache
的方法,而不是清除 Cache
内容的方法。
如果您想稍后执行此操作,则需要调用 Cache.removeAll
,您可以在其中从 CacheManager
本身访问所有缓存。