我无法清除缓存。
我有一个简单的ReadAllQuery。
Session session = ((EntityManagerImpl) em).getActiveSession();
ReadAllQuery query = new ReadAllQuery(Customer.class);
query.setFetchSize(100);
query.useScrollableCursor();
ScrollableCursor cursor = (ScrollableCursor) session.executeQuery(query);
int count = 0;
while (cursor.hasNext()) {
Customer customer = (Customer) cursor.next();
if (++count > 0 && count % 100 == 0) {
System.out.println("Fetched " + count + " entities");
em.getEntityManagerFactory().getCache().evictAll();
}
}
我也尝试过使用em.clear()
和
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.query-results-cache" value="false"/>
在persistence.xml中但堆空间不断增长。 如何清除实体?
谢谢
答案 0 :(得分:1)
请使用:
em.createNamedQuery("findAll").setHint(QueryHints.CACHE_RETRIEVE_MODE, CacheRetrieveMode.BYPASS).getResultList();
正如您在BYPASS
枚举的javadoc中看到的那样:
绕过缓存:直接从数据库中获取数据。