相关配置如下:<!-- 是否启用查询缓存 -->
<property name="hibernate.cache.use_query_cache">true</property>
<!-- 是否启用二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">
true
</property>
<!-- 缓存的第三方代理 -->
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property><?xml version="1.0" encoding="UTF-8"?>
<ehcache>
   <diskStore path="java.io.tmpdir" />
   <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        />
        
    <cache name="com.wasu.wasustb.oa.entity.SwApplyAll"
        maxElementsInMemory="20"
        eternal="false"
        overflowToDisk="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        />          
</ehcache><class name="com.wasu.wasustb.oa.entity.SwApplyAll" table="SW_APPLY_ALL">
        <cache usage="read-only"/>
Session session = getHibernateTemplate().getSessionFactory().openSession();
Query query = session.createQuery(hql).setCacheable(true).setFirstResult(offset).setMaxResults(limit);
query.setLong(0, categoryId);
return query.list();

解决方案 »

  1.   

     lz 把这个设置<diskStore path="java.io.tmpdir" />成本地的硬盘路径,例如:c://等,然后执行查询语句,如果在该路径下生成了一些文件,那么所有二级缓存设置成功了。
      

  2.   

    文件生成了,但是还是有sql语句生成。
        感觉二级缓存还是没有起到作用。
            为什么?
      

  3.   

    设置<diskStore path="java.io.tmpdir" />成本地的硬盘路径
      

  4.   

    Session 是这样获取的吧:
    Session session = session = HibernateSessionFactory.getSession();