ハイバネート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回目はデータベースからではなくキャッシュされた結果を取得します
常にデータベースにアクセスしたい。解決策は何ですか。