我用mysql的管理工具直接删除了一条数据。然后用hibernate的query.list读取的时候,那条被删除的数据还是能够被查找出来。为什么啊,是缓存的原因。应该怎么解决啊。如果我重启服务器,就查找不到了。

解决方案 »

  1.   

    我是直接用mysql的管理工具删除数据的,没有通过程序删除。我用query.list查找的话是没有提交事务的。
      

  2.   

    如果你确定数据已经删除就是hibernate缓存的原因。 hibernate一共两级缓存。 第一级是事物级的。 重新获取session 然后运行查询。 二级缓存是系统级的。 这个你看看配置到底配置了没有
      

  3.   

    我没有配置缓存。我session对象是这样获取的。Session session=HibernateSessionFactory.getSession();
      

  4.   

    你的MySql里的删除操作提交了吗?如果用其他MySql客户端连上去,查询到数据已经不在了,那应该是你Hibernate缓存的问题最大可能感觉还是你MySql本身的事务未提交,Hibernate从数据库端看只是一个连接会话,不会涉及太多这种“脏读”之类隔离级别的问题
      

  5.   

    试试session.clear或session.flush看看起不起作用
    配置文件是怎么配置的?
      

  6.   

    用SQL 语句能够查询出来吗?
      

  7.   

    一般用工具删除记录,有时候就忘记了commit提交事务,delete ,insert,update都是DML语句,必须提交事务才能保证语句被执行,
      

  8.   


    是不是应该 getCurrentSession()啊