2013-07-19 3 views
0

Я использую спящий режим 3 в моем приложении есть один сценарий, в котором я вставив две записи и обновление одной записи: -Hibernate данные не обновляются в базе данных

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(); 

Проблема в коде выше, здесь в смс и в отмените таблице данные экономии, но обновление не работает и не показываются ошибка тоже.

Его не происходит в каждом случае, когда-то он не обновляется

Есть ли какие-либо проблемы с двумя разными сессиями ??

+0

Проверьте запросы, которые будут запущены, когда 'session.update (коллекция); tx.commit(); 'вызывается. и, если возможно, вставьте их сюда тоже. – RAS

+0

@RAS извините ... Свойство showSql установлено в false в файле конфигурации hibernate – Hunter

+1

, который вы собираетесь установить вставленный код ... Отдельные строки при достижении ';'. Это: 'Collection collection = openSession();' не совсем понятно, например. Помогите нам помочь вам;). – yair

ответ

0

Нет ничего плохого в двух разных сеансах.

Вот что происходит в вас код:

Первый вы получаете объект из базы данных и закрытия сессии

КОЛЛЕКЦИЯ = openSession(); Session.load() .... session.close();

Затем вы устанавливаете объект Collection. setCollection (коллекция);

Теперь он будет действовать как отдельный объект. Если после транзакции какой-либо transaction.commit ваш объект будет зафиксирован в базе данных, вы даже сохраните другой объект, который вы делаете в первой части, где вы сохраняете первый объект.

Во второй транзакции ничего не обновляется, поэтому она не обновляется.

+0

Его хорошо .... mukesh, но обновленные данные не отображаются в базе данных – Hunter

+0

Это потому, что вы ничего не обновляли в объекте коллекции. Вы? Потому что я не нашел никакого метода collection.set() в вашем коде. –

+0

извините mukesh, я забыл добавить этот код ... да, я обновляю этот объект коллекции, например collection.setStatus («XYZ»); его помещается перед первым фиксацией. – Hunter

Смежные вопросы