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>();  
        }
    }
}

問題は、同じクエリを2回実行すると同じ結果が得られることです..つまり、2回目はデータベースからではなくキャッシュされた結果を取得します

常にデータベースにアクセスしたい。解決策は何ですか。

4

0 に答える 0