Я пытаюсь кэшировать запрос следующим образом:
TypedQuery<Foo> q = em.createQuery(
"SELECT foo FROM Foo foo " +
"INNER JOIN FETCH Foo.bar "
);
q.setHint("org.hibernate.cacheable", true);
Проблема в том, что FETCH
, похоже, не имеет никакого эффекта при обращении к кешу, то есть к коллекции Foo.bar.не инициализируется.Я мог бы перебрать список результатов и инициализировать все экземпляры коллекции вручную, но это сделало бы все это еще медленнее, чем без использования кеша запросов.
Я использую JBoss AS 6.0 /Hibernate 3.6 с Infinispan в качестве механизма кеширования.
Любопытно, что согласно статистике кеша, которую я получаю через консоль JMX, объекты в Foo.bar, похоже, кэшируются, но кеш для этих объектов не получает никаких попаданий.