通过Session.save(obj)后,立即进行Session.get找不到插入的数据
在save后进行断点,此时手工查看数据库内容也没有发现新插入的数据(并没有其他的异常错误)会是什么原因呢?

解决方案 »

  1.   

    是这样一个逻辑
    BeginTransaction(tx)commitTransaction(tx2)//tx和tx2都是通过相同的方法获取数据源得到的,应该是一样的吧,不知道这样有没有影响
    session.saveRollback(tx)
      

  2.   

    session.save
     怎没有放到commit前面?
      

  3.   


    对,不知道我的代码有没有放错位置,明天上班去看看
    另外想问一下,这个tx,tx2是两次通过同一个方法获得的,这个有没有影响?
      

  4.   

    打开sessionbeginTransaction();操作 session.save()commit()关闭session
      

  5.   

    我想起来了,我的代码commit是在save之后的,不过还是没有保存到数据库
    所以我在怀疑是不是跟那个usertransaction有关
      

  6.   

    1.你可以用show_sql来查看数据到底有没有插入
    插入的话sql语句会在控制台打印出来
    2.请再一个事务里面做save的操作
    你开始事务a    save   再提交事务b。
    怎么可能插的进去。
      

  7.   

    save完要提交才能有插入数据,必须commit()
      

  8.   

    先session.save保存再
    commit()
      

  9.   

    恩,的确要commit下才能保存数据
      

  10.   

    session.save()成功后,回返回新插入的Id么?
      

  11.   

    呵呵,我是今天才开始学习hibernate.还好写好了一个测试程序。
    但是也发现问题,我的配置文档hibernate.cfg.xml没有针对事务处理单独作处理,也就是hibernate默认的false,需要在程序中commit才可以成功,类似这样的,
             session.beginTransaction();        Event theEvent = new Event();
            theEvent.setTitle(title);
            theEvent.setDate(theDate);        session.save(theEvent);
            System.out.println(theEvent.getId());
            session.getTransaction().commit(); //提交事务
    但是当我将红色语句注释之后,确实没有插入到数据库中,但是我映射的表的主键却已经自增了。打印可以看出来,当然不打印我手动插入数据也发现已经自增了。