1

在休眠 SQL 中。我在休眠配置 xml 文件中执行了以下操作:

 <hibernate-configuration>
<session-factory>
      <property name="hibernate.cache.provider_class">
     org.hibernate.cache.NoCacheProvider
  </property>

      <property name = "org.hibernate.cacheable">false</property>
      <property name="hibernate.cache.use_query_cache">false</property>
      <property name="hibernate.cache.use_second_level_cache">false</property>

在代码中,我执行了以下操作:

public static List<Object> selectFromStudents(String queryName, Object[]                queryParameters) {
    Session  session = null;
    List<Object> queryList = null;
    try{
        session = mySessionFactory.openSession();
        Query query = session.getNamedQuery(queryName);
        query.setCacheable(false);

        if (queryParameters != null) { 
            // set the query parameters 
            for (int i = 0; i < queryParameters.length; i++) {
                query.setParameter(i, queryParameters[i]);
            }
        }
        // execute the query
        queryList = (List<Object>) query.list();
    } catch(HibernateException e){
        e.printStackTrace();
    } finally{
        if(session != null){
            session.clear();
            session.close();    
        }
        if(queryList != null){
            return queryList;
        }
        else{
            // no data returned
            return new ArrayList<Object>();  
        }
    }
}

问题是当我两次执行相同的查询时,它会给出相同的结果..这意味着在第二次它不是从数据库中获取缓存的结果

我希望它始终访问数据库。解决办法是什么。

4

0 回答 0