我调用 myeclipse 生成的sava 方法console中 提示 sava successful 而且用hibernate访问这个数据也是存在的而在数据库中确没有保存是什么原因?我自己 弱弱的猜测下是不是因为 没有关闭session 的原因还是hibernate 的缓存机制 引起的问题

解决方案 »

  1.   

    请帮助下!
    myeclipse 生成的DAO sava方法的代码 如下
    public void save(User transientInstance) {
    log.debug("saving User instance");
    try {
    getSession().save(transientInstance);
    System.out.println("save user successful!");
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    }
      

  2.   

    save要放到事务中,要提交事务!
      

  3.   

    Session session = getSession();
    Transaction tx = session.beginTransaction();
    session.save(transientInstance);
    tx.commit();
      

  4.   

    Transaction 不是是可选的接口吗?
    为什么一定要实现事务才会存到数据库没有其他 方法吗?还有如果一定要实现事务 为什么myeclipse 不帮你生成 啊
      

  5.   

    如果单独使用hibernate必须开启事务,public void testSave1() {
    Session session = null;
    Transaction tx = null;
    try {
    session = HibernateUtils.getSession();
    tx = session.beginTransaction(); 。

    session.save(user);
    tx.commit();
    }catch(Exception e) {
    e.printStackTrace();
    tx.rollback();
    }finally {
    HibernateUtils.closeSession(session);
    }
    }
    楼主遇到的情况是因为数据库的事务隔离级别有关,你可以查下资料看看
      

  6.   

    你这个是不是跟别的表有关系?可能也是你的级联的问题吧。。如果是这个问题。可以在与
    数据库映射时配置一下级联的cascade属性。。lz看一下吧。。
      

  7.   

    spring与hibernate一起使用的话。 spring可以控制事物。 
    如果单独使用hibernate必须 commit()一下。 
    lz试试看按照3楼的方法是不是就插入数据库成功了