【发布时间】:2016-04-22 09:28:51
【问题描述】:
我有以下场景:
- 两个应用程序使用相同的
in file hsqldb -
app1仅写入/删除db和app2仅读取它 -
app1信号(通过发送事件)app2db已更新,他应该读取新值 -
app2无法读取新值,他只能看到旧值
我试着写:
Session session = sessionFactory.getCurrentSession();
try {
session.setFlushMode(FlushMode.AUTO);
session.saveOrUpdate(cluster);
session.flush();
return true;
} catch (Exception e) {
LOG.error("Failed saving cluster {}!", cluster.getName(), e);
return false;
}
阅读:
Session session = sessionFactory.getCurrentSession();
session.setCacheMode(CacheMode.REFRESH);
try {
return (List<Cluster>) session
.createCriteria(Cluster.class)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
} catch (Exception e) {
LOG.error("Error while trying to read the clusters from file!", e);
return new ArrayList<>();
}
但遗憾的是这不起作用。
我也试过关闭连接然后重新打开,但这也不起作用。
更新[1]:
我刚刚设置:
basicDataSource.setDefaultTransactionIsolation(Isolation.READ_UNCOMMITTED.value())
在app2 方面,但即便如此,app2 也无法读取更新。
【问题讨论】:
-
hsqldb使用的是什么表类型?
-
@Evgeny 表类型是什么意思?桌子的构成?
-
我的表格是由
hibernate自动创建的。我查看了sql command,发现这些表是使用create table创建的,所以它是memory table -
看来服务器模式是进程内(独立)模式。是这样吗? hsqldb.org/doc/guide/ch01.html#N1013D
标签: java spring hibernate hsqldb