Обычный способ запроса:
Session sess=factory.getCurrentSession();
sess.beginTran....();
String hql="from Entity en where en......";
Query q=sess.createQuery(hql).setCacheble(true);
List<Entity> list=q.list();
В этом случае объект в списке - это «сущности».Они будут кэшированы.
Однако мне интересно, будет ли работать кеш, если hql будет выглядеть следующим образом:
hql="select new Result(count(xx),sum(xxx)) from Entity en ....";
class Result{
long num;
long sum;
//constructor,getter and setter
}
Теперь тип объектов в списке результатов будет Результат .
List<Result> list=q.list();
Мой вопрос: можно ли сохранить объект результата в кэше второго уровня?
Также как насчет ResultTransformer ?
q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
В этом случае тип объектов в q.list () будет Map , эти карты также можно кэшировать?