急!!Hibernate查询出来的数据与数据库中的不一样???!!!

heavensboy 2008-10-27 04:20:41
相关代码如下:

List list=null;
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Transaction ts;
try{
ts=session.beginTransaction();
String sql="sql查询语句";
list=(List)this.getHibernateTemplate().find(sql);
ts.commit();
return list;
}
catch (RuntimeException re) {
return null;
}finally{
session.flush();
session.close();
}

结果与数据库中的不一样,出来的与数据库中的实时记录不一样(我在数据库中手动删除一部份记录)。怎么回事呀?Hibernate和spring相关的配置文件反复检查了也没有发现什么问题
...全文
152 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lihan6415151528 2008-11-05
缓存搞鬼了

回复
NONE9 2008-11-05
楼上正解
回复
freedom2001 2008-10-27
hibernate有缓存机制,第一次读取都加载到缓存里,页面直接从缓存获取数据,这样提高了页面访问速度,但是同样也影响了数据的同步。
不过不明白你既然使用了spring为什么又返回来用hibernate,一般情况下直接用getHibernateTemplate().load或者find查询就行,除非有特别需要才通过session。通过spring管理session,使用getHibernateTemplate()查询好像这种问题不太容易出现
回复
heavensboy 2008-10-27
谢谢大家,楼上的session.clear()也试了,还是不行。结果我把电脑重启了一次,又完全正确了,能实时与数据同步。真是郁闷,怎么还会有这种事呀?
回复
freedom2001 2008-10-27
缓存的问题
list=(List)this.getHibernateTemplate().find(sql);
在这个前面用session.clear()试试
回复
meadking 2008-10-27
也有可能是:事务隔离了,数据库事务方面
回复
meadking 2008-10-27
第二次直接从缓存中读取数据,加快速度
这个是hibernate的优化.

hibernate.cache.use_query_cache=false
回复
meadking 2008-10-27
有缓存数据!
如果你第一次select了,二级缓存会保留数据的!
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2008-10-27 04:20
社区公告
暂无公告