У меня есть простая таблица ApplicationLog в Hsqldb 1.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;
Я пробовал разные режимы кеширования, думая, что только попадаю в кеш.
Я также пытался выселить класс, о котором идет речь. Но ничего не помогает. Я вижу только устаревшие данные, а не только что вставленные, если не перезапущу свой клиент.
Может кто-нибудь помочь, пожалуйста.