我用ssh做一个博客系统,不知道什么原因,在执行一次或两次查询操作后 ,居然自动执行一个udpate语句,程序偶尔能运行,偶尔又运行不了,或者多刷新几次就报错了,请高手帮忙,谢谢

解决方案 »

  1.   

    刷新当前页面会造成前一个请求重复提交 之所以会update 或许是你的dao层使用了saveOrUpdate方法。
      

  2.   

    这个时候log4j配置的日志输出文件就很重要了,检查每次操作是否都是你发出的请求。
      

  3.   

    嗯,我dao层使用了继承了BaseHibernateDAO类,我调用的就是这个类里的protected void add(Object item){
    Transaction tx = null;
    Session session = this.getSession();
    try {
             tx = session.beginTransaction();
             session.save(item);
             tx.commit();
            } catch (RuntimeException re) {
             if (tx != null) {
    tx.rollback();
    }
                throw re;
            } 
             finally {
             this.closeSession();
             }
    }那我该怎样解决呢
      

  4.   

    刷新重复提交了?
    写个令牌是不是调用了saveOrUpdate方法  ?当对象是瞬时时就save 是脱管时就update了
      

  5.   

    查询不应该update嘛 如果是保存出现update可能是调用了saveOrupdate 
      

  6.   

    你是不是调用了saveorupdate ?哪个会在执行完查询后在执行update的,至于刷新后出错,你看看是不是你的重定向那块有问题
      

  7.   

    谢谢各位,是sessionFactory的问题,我之前用的是HibernateSessionFactory,现在我改用
    org.springframework.orm.hibernate3.LocalSessionFactoryBean后问题就解决了,有人知道原因么
      

  8.   

    我调用的是 HibernateSessionFactory.getSession.save()方法