请问下,我配置了开启2级Cache,那么session.createQuery之后就应该回把查到的实体放到2级Cache里把,然后在设置sessionFactory.evict把实体从2级缓存里清掉,,那么第2次查询的时候自然是要重新load了,可为什么console显示是直接拿缓存的数据?
hibernate.cfg.xml中:
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<property name="hibernate.cache.use_query_cache">true</property>
ehcache.xml也在,
java代 *** :
String hql = "from TUser where age>?";
Query query = session.createQuery(hql);
query.setInteger(0, 30);
query.setCacheable(true);
List userList = query.list();
for(int i=0; i<userList.size(); i++){
TUser user = (TUser)userList.get(i);
getSessionFactory().evict(TUser.class, user.getId());
System.out.println(user.getName());
}
System.out.println("Second Query...");
query = session2.createQuery(hql);
query.setInteger(0, 30);
query.setCacheable(true);
userList = query.list();
for(int i=0; i<userList.size(); i++){
TUser user = (TUser)userList.get(i);
System.out.println(user.getName());
会员注册
会员登录
个人空间
发表评论