用Hibernate查询一张表,第一次显示列表数据。
用修改按钮去修改其中一项的值,保存后,重新刷新整个列表,第二次显示列表数据。
预期结果是:得到的新列表显示的数据是刚才修改过后的。
实际结果是:得到的刷新后的列表依然是第一次查询的旧数据,并未更新成已修改后的新数据。
可能的原因:
Hibernate查询整个列表的时候并未直接从数据库查询,或者查询了但是查到的数据不全是最新的。因为我再次修改该列数据时,用ID查出的结果是最新的修改后的结果。
最终解决的方案:
1、在每次查询之后添加session.close();(必须有)
session.close();
2、action方法想页面返回数据结果列表时,返回的response设置为不缓存的模式。(可选择,代码如下)
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);