我用hibernate写了段返回BranchForm表中所有记录的代码:
public List myQuery(){
Session session=sessionFactory.openSession();
String hql="from BranchForm";
List list = null;
try{
Query query=session.createQuery(hql);
list=query.list();
}catch(Exception e){
System.out.print("查询时的错误信息:"+e.getMessage());
}finally{
session.close();
}
return list;
}
在页面上显示正常,(假设有3条记录)
但当我到数据库中手动删除一条记录后,再次打开页面,发现页面上仍然是3条记录
只有当服务器重启后,才显示2条 ,不知怎么回事
public List myQuery(){
Session session=sessionFactory.openSession();
String hql="from BranchForm";
List list = null;
try{
Query query=session.createQuery(hql);
list=query.list();
}catch(Exception e){
System.out.print("查询时的错误信息:"+e.getMessage());
}finally{
session.close();
}
return list;
}
在页面上显示正常,(假设有3条记录)
但当我到数据库中手动删除一条记录后,再次打开页面,发现页面上仍然是3条记录
只有当服务器重启后,才显示2条 ,不知怎么回事
楼主【udk007】截止到2008-06-30 15:26:37的历史汇总数据(不包括此帖):
发帖数:14 发帖分:180
结贴数:12 结贴分:160
未结数:2 未结分:20
结贴率:85.71 % 结分率:88.89 %
楼主加油
在实际中很少发生手动去删除数据的情况的。
那样需要很高的权限,不需要程序员去考虑的 。你要做的就是在插入更新删除后将相关的表重新select到内存中或者javabean中。
防止使用过期的数据就行了。
正解可以设置hibernate缓存时间
public List myQuery(){
Session session=sessionFactory.openSession();
String hql="from BranchForm";
List list = null;
try{
Query query=session.createQuery(hql);
list=query.list();
}catch(Exception e){
System.out.print("查询时的错误信息:"+e.getMessage());
}finally{
session.clear();//加了这句 清空缓存
session.close();
}
return list;
}
发现根本不起作用
不知道3楼所说的 系统把数据保存在缓存里了 是保存在哪里了啊
用事务处理嘛commit()一下就行了啊