Я разрабатываю приложение Java
, которое быстро проверяет наличие обновлений в таблице клиентской базы данных, и если какое-либо обновление найдено, а затем переносите его в базу данных сервера, используя Hibernate
и MySQL
.Почему сеанс Hibernate не отражает изменения, сделанные за пределами приложения
- Это хорошо работает, когда мы изменения базы данных с помощью спящего режима сеанса НО всякий раз, когда я изменить значение таблицы базы данных с помощью
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;
}
}
Что мне здесь не хватает?
Вы, наверное, забыл совершить сделку в MySQL Workbench. Или вы не изменяете таблицу/базу данных, которую, как вы думаете, вы изменяете. –
Дорогой @JBNizet Я чертовски уверен в базе данных/таблице, а в MySQL Workbench это автоматический фиксация на BTW. Я также делаю это вручную. – Gopal00005
Тогда вы, вероятно, настроили кеш второго уровня и получаете устаревшие значения из этого кеша. –