Hibernate条件查询正在返回过时的结果

Hibernate条件查询正在返回过时的结果,hibernate,pagination,criteria,hsqldb,Hibernate,Pagination,Criteria,Hsqldb,我在HSQLDB1.8.0中有一个简单的表应用程序日志 一个单独的客户端将数据插入此表 我正在从另一个java客户机查询这个表。 我发现,如果该查询java客户端保持运行,则条件查询计数不正确。(即,如果插入是通过另一个客户端进行的,当我查询时,我看不到这些结果-另一个客户端确实提交了,我可以从sql客户端查看插入的语句-只有我的hsql客户端在查看新数据时出现问题) 如果我关闭客户端并重新启动它,则返回的数据 以下是我的查询代码: SessionFactory sessionFactory =

我在HSQLDB1.8.0中有一个简单的表应用程序日志

一个单独的客户端将数据插入此表

我正在从另一个java客户机查询这个表。 我发现,如果该查询java客户端保持运行,则条件查询计数不正确。(即,如果插入是通过另一个客户端进行的,当我查询时,我看不到这些结果-另一个客户端确实提交了,我可以从sql客户端查看插入的语句-只有我的hsql客户端在查看新数据时出现问题)

如果我关闭客户端并重新启动它,则返回的数据

以下是我的查询代码:

SessionFactory sessionFactory = HibernateConfigurer.getFactory();

Session session = sessionFactory.openSession();
Criteria criteria = session.createCriteria(
ApplicationLog.class).setCacheMode(CacheMode.IGNORE);

if(keys != null) 
{
int size = keys.length;

Long[] allKeys = new Long[size];
for (int i = 0; i < size; ++i)
{
allKeys[i] = new Long(keys[i]);
}

criteria.add(
Restrictions.in(
"applicationLogItemKey", allKeys));
}

if((from != null) && (to != null)) 
{
criteria.add(Restrictions.ge(
"logTime", from));
criteria.add(Restrictions.le(
"logTime", to));
} else {

if(from != null) {
criteria.add(Restrictions.ge(
"logTime", from));
} else if(to != null) {
criteria.add(Restrictions.le(
"logTime", to));
}

}

criteria.setFirstResult(startNumber);
criteria.setMaxResults(pageSize);
criteria.addOrder(Order.desc("logTime"));

List applicationLogs = criteria.list();

session.close();
return applicationLogs;
SessionFactory SessionFactory=HibernateConfigurer.getFactory();
Session Session=sessionFactory.openSession();
Criteria=session.createCriteria(
setCacheMode(CacheMode.IGNORE);
如果(键!=null)
{
int size=keys.length;
Long[]allkey=新的Long[size];
对于(int i=0;i
我尝试了不同的缓存模式,认为我只是在访问缓存。 我还试着驱逐这个有问题的班级。但没有任何帮助。除非重新启动客户端,否则我只能看到过时的数据,而不能看到新插入的数据

有人能帮忙吗。

使用
session.flush()
。刷新会话将使会话中当前的数据与数据库中的数据同步


一个小问题:有太多的未知数,如“to”、“from”和“startNumber”等。请检查它们是否正确。

您传递的from和to是什么?在运行客户端期间,它们是否相同?我确实在插入新记录的位置使用session.flush。上面的代码只是读取-即使在读取时也需要session.flush吗?不,您不需要这样做!很抱歉