Мы реализовали решение для кэширования, используя версию ignite 2.0.0 для структуры данных, которая выглядит следующим образом.
public class EntityPO {
@QuerySqlField(index = true)
private Integer accessZone;
@QuerySqlField(index = true)
private Integer appArea;
@QuerySqlField(index = true)
private Integer parentNodeId;
private Integer dbId;
}
List<EntityPO> nodes = new ArrayList<>();
SqlQuery<String, EntityPO> sql =
new SqlQuery<>(EntityPO.class, "accessZone = ? and appArea = ? and parentNodeId is not null");
sql.setArgs(accessZoneId, appArea);
CacheConfiguration<String, EntityPO> cacheconfig = new
CacheConfiguration<>(cacheName);
cacheconfig.setCacheMode(CacheMode.PARTITIONED);
cacheconfig.setAtomicityMode(CacheAtomicityMode.ATOMIC);
cacheconfig.setIndexedTypes(String.class, EntityPO.class);
cacheconfig.setOnheapCacheEnabled(true);
cacheconfig.setBackups(numberOfBackUpCopies);
cacheconfig.setName(cacheName);
cacheconfig.setQueryParallelism(1);
cache = ignite.getOrCreateCache(cacheconfig);
У нас есть метод, который ищет узел в определенном accessZone и appArea. Этот метод отлично работает в 2.0.0, мы обновили его до последней версии 2.4.0, и этот метод больше ничего не возвращает (ноль записей). Мы включили консоль отладки H2 и выполнили тот же запрос, и мы видим те же самые записи 3k. Понижение библиотеки до 2.0.0 заставляет код снова работать. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы помочь с этим вопросом
Результаты с консоли H2.
Результаты консоли H2