急!!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相关的配置文件反复检查了也没有发现什么问题
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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了,二级缓存会保留数据的!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧