Hibernate Data不在数据库中更新

时间:2013-07-19 09:38:08

标签: hibernate

我在我的应用程序中使用hibernate 3有一个场景我插入两条记录并更新一条记录: -

  SessionFactory sf = HibernateUtils.getSessionFactory();
        session = sf.openSession();
        tx = session.beginTransaction();
        Collection collection = session.load(Collection.class, "12345");    
        tx.commit();
// using this way i am getting this object from database. 
setCollection(collection);//Here i am setting this object in one POJO class

现在处于其他功能

我再次得到这个对象......

Collection collection=getCollection(); //here it is detached

现在我首先使用以下方法将数据保存在一个表中: -

 SessionFactory sf = HibernateUtils.getSessionFactory();
            session = sf.openSession();
            tx = session.beginTransaction();
    Sms sms=new Sms();
        sms.setMessage(collection.getMesage());
       session.save(sms);
       tx.commit();
       session.flush();
       session.close();

然后我在同一会话中更新并插入两条记录

SessionFactory sf = HibernateUtils.getSessionFactory();
            session = sf.openSession();
            tx = session.beginTransaction();
    Cancel cancel=new Cancel();
        cancel.setMessage(collection.getMesage());
       session.save(cancel);
       session.update(collection);
       tx.commit();
       session.flush();
       session.close();

上面代码中的问题,这里的sms和取消表数据正在保存,但更新不起作用,也没有显示任何错误。

它并非在每种情况下发生,有时它不会更新

两个不同的会话有问题吗?

1 个答案:

答案 0 :(得分:0)

在两个不同的会话中没有任何错误。

以下是代码中发生的事情:

首先,您从数据库获取对象并关闭会话

Collection collection = openSession(); session.load().... session.close();

然后设置Collection对象。 的 setCollection(集合);

现在它将扮演一个Detached对象。如果在此之后做任何transaction.com,你的对象将在数据库中提交,即使你正在保存一些其他对象,你正在保存第一个对象的第一部分。

在第二个交易中没有任何更新,所以它没有得到更新。