用hibernate做一个项目,就是要展现一个列表,可以查询、修改、删除,但是却遇到了查询到的数据和展现的数据不一致的情况
我没用Spring管理事物,但是删除修改方法都已经用了transation.commit(),session.flush()方法,结果是有时删除完成后再用一次请求刷新页面时,却惊奇的发现还能显示这条已经在数据库中确认删除的数据!!
请教各位高手,本人第一次做项目啊,神啊,大侠们啊,救救我这个苦命的IT人吧。

解决方案 »

  1.   

          没遇到过,试下:
           transation.commit();
           session.clear()
      

  2.   

    是不是在同一缓存中。 如果是的话在用session.clear()
      

  3.   

    JAVA技术全功略(85835578)高级群   现在开始招人了啊   能更多的人一起交流了  希望大家一起交流JAVA技术经验 
      

  4.   

    一般情况就是你删除以后,还是跳转回查页。所以你就做成删除成功直接跳转回查询页,并没有再查询一次,而你查询页封装所有信息的list又是被你放在session中而不是request。所以你刚才删除的对象一直在session中的list里,你并没有list.remove(被删除的对象)。你只要删除成功后再调用1次查询,之后再进查询页就可以了。
    以上纯属猜测,因为我第一次做项目的时候就经常犯这个毛病。
      

  5.   

    多谢这位兄弟了,但是我不是用session存的,都是用request存的,这种情况会不会发生在request.setAttribute()里呢??
      

  6.   

    1、数据库中删除掉后,但在缓存中还有
    2、重启服务后,如果还有,那证明你从数据库中删除的操作有问题,其实并没有删除掉,所以你就得检查下你删除代码是不是有错,比如是否写漏了commit等
      

  7.   

    作用域问题,   你把查大的数据放request里面应该就没事了,  如果还不行那就是Client的缓存问题了
      

  8.   

    这位老大,我都加了commit了,直接到数据库中查找确认已经删除啊。
      

  9.   

    你不要用hibernate自带的数据库连接池,你自己用一个比如c3p0 就好了 这个是hibernate自带的连接池的一个bug 不用就好了
      

  10.   

    上面楼主说数据是放在request里传入页面的那你在删除完数据之后是如何进入到下一页面的呢?转发还是重定向?是不是你是用了转发而忘了清Attribute