hibernate 缓存

aofwiadsio 2011-03-18 12:20:01
我用mysql的管理工具直接删除了一条数据。然后用hibernate的query.list读取的时候,那条被删除的数据还是能够被查找出来。为什么啊,是缓存的原因。应该怎么解决啊。如果我重启服务器,就查找不到了。
...全文
119 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
aofwiadsio 2011-03-18
  • 打赏
  • 举报
回复
用sql语句查不出来。
qiheia 2011-03-18
  • 打赏
  • 举报
回复
确定下你的事务是否提交了,没提交事务的话,数据还是存在的。。。。。。。
greatmind829 2011-03-18
  • 打赏
  • 举报
回复
用SQL 语句能够查询出来吗?
aofwiadsio 2011-03-18
  • 打赏
  • 举报
回复
上述办法都试了,没起作用。
wangju309 2011-03-18
  • 打赏
  • 举报
回复
试试session.clear或session.flush看看起不起作用
配置文件是怎么配置的?
qingyuan18 2011-03-18
  • 打赏
  • 举报
回复
你的MySql里的删除操作提交了吗?如果用其他MySql客户端连上去,查询到数据已经不在了,那应该是你Hibernate缓存的问题

最大可能感觉还是你MySql本身的事务未提交,Hibernate从数据库端看只是一个连接会话,不会涉及太多这种“脏读”之类隔离级别的问题
aofwiadsio 2011-03-18
  • 打赏
  • 举报
回复
能。只有重启服务器才查找不到。
qkniit 2011-03-18
  • 打赏
  • 举报
回复
刷新一下 还能查到吗?
aofwiadsio 2011-03-18
  • 打赏
  • 举报
回复
我没有配置缓存。我session对象是这样获取的。Session session=HibernateSessionFactory.getSession();
wp500 2011-03-18
  • 打赏
  • 举报
回复
如果你确定数据已经删除就是hibernate缓存的原因。 hibernate一共两级缓存。 第一级是事物级的。 重新获取session 然后运行查询。 二级缓存是系统级的。 这个你看看配置到底配置了没有
zn85600301 2011-03-18
  • 打赏
  • 举报
回复
有可能是开启的二级缓存~~
aofwiadsio 2011-03-18
  • 打赏
  • 举报
回复
我是直接用mysql的管理工具删除数据的,没有通过程序删除。我用query.list查找的话是没有提交事务的。
e生态_修身 2011-03-18
  • 打赏
  • 举报
回复
你没有提交了!
wangjiangbo2 2011-03-18
  • 打赏
  • 举报
回复
把配置文件设置缓存那里改了
东方明珠2017 2011-03-18
  • 打赏
  • 举报
回复
学习。。。
colachens 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 aofwiadsio 的回复:]
我没有配置缓存。我session对象是这样获取的。Session session=HibernateSessionFactory.getSession();
[/Quote]

是不是应该 getCurrentSession()啊
追风★少年 2011-03-18
  • 打赏
  • 举报
回复
把缓存关了再查一下
lffsonic 2011-03-18
  • 打赏
  • 举报
回复
一般用工具删除记录,有时候就忘记了commit提交事务,delete ,insert,update都是DML语句,必须提交事务才能保证语句被执行,

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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