在hibernate SQL中..我在hibernate config 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>();
}
}
}
问题是,当我两次执行相同的查询时,它会给出相同的结果..这意味着在第二次它得到的缓存结果不是来自数据库
我希望它始终访问数据库。解决方案是什么。