【发布时间】:2015-04-18 12:55:50
【问题描述】:
我正在开发一个Java 应用程序,它可以快速检查客户端数据库表中的更新,如果发现任何更新,则使用Hibernate 和MySQL 将其传输到服务器数据库。
- 当我们使用休眠会话更改数据库时,它运行良好但是每当我使用
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 工作台中提交事务。或者您没有修改您认为正在修改的表/数据库。
-
亲爱的@JBNizet 我非常确定数据库/表和在 MySQL Workbench 中它是自动提交的顺便说一句我也手动提交。
-
那么您可能配置了二级缓存,并且正在从该缓存中获取陈旧值。
-
老板@JBNizet 没有二级缓存,但我认为这是因为一级缓存,但我读过我们无法更改
first-level缓存,请提供任何其他解决方案... -
第一个缓存关联到 Session 实例,你的方法创建一个新的会话,所以...