2015-04-18 2 views
3

Я разрабатываю приложение Java, которое быстро проверяет наличие обновлений в таблице клиентской базы данных, и если какое-либо обновление найдено, а затем переносите его в базу данных сервера, используя Hibernate и MySQL.Почему сеанс Hibernate не отражает изменения, сделанные за пределами приложения

  1. Это хорошо работает, когда мы изменения базы данных с помощью спящего режима сеанса НО всякий раз, когда я изменить значение таблицы базы данных с помощью MySQL Workbench, то он возвращает записи, которые, как и раньше.

Как можно обновить сессию спящего режима на внешних изменениях в таблице.

public List<com.ctpl.models.client.MasterTable> getAllClientMasterTableWithServerFlag() { 
    try { 
     clientSession = ClientHibernateUtil.getSessionFactory().openSession(); 
     clientSession.flush(); 

     Criteria criteria = clientSession.createCriteria(com.ctpl.models.client.MasterTable.class); 
     criteria.add(Restrictions.eq("serverFlag", 0)); 

     List<com.ctpl.models.client.MasterTable> clientMasterTables = criteria.list(); 
     clientSession.close(); 
     return clientMasterTables; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

Что мне здесь не хватает?

+0

Вы, наверное, забыл совершить сделку в MySQL Workbench. Или вы не изменяете таблицу/базу данных, которую, как вы думаете, вы изменяете. –

+0

Дорогой @JBNizet Я чертовски уверен в базе данных/таблице, а в MySQL Workbench это автоматический фиксация на BTW. Я также делаю это вручную. – Gopal00005

+0

Тогда вы, вероятно, настроили кеш второго уровня и получаете устаревшие значения из этого кеша. –

ответ

1

Посмотрите Session.clear() или метода выселить

Обратитесь к этой статье:

http://howtodoinjava.com/2013/07/01/understanding-hibernate-first-level-cache-with-example/

Надежда, что помогает

+1

Спасибо за ваш ответ @Godwin, но ваш IDEA для 'session.clear()' не работает в этом случае.BTW, это заставляет файл hibernate.cfg.xml перенастраиваться при каждом запросе, поэтому я думаю, что это не хорошая ИДЕЯ, хотя здесь это не работает. – Gopal00005