manière normale requête:est le deuxième niveau de support cache pour mettre en cache le résultat de la requête exclut l'entité
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();
Dans ce cas, l'objet dans la liste sont de « entité ». Ils seront mis en cache.
Cependant, je me demande si le cache fonctionnerait si le hql est comme ceci:
hql="select new Result(count(xx),sum(xxx)) from Entity en ....";
class Result{
long num;
long sum;
//constructor,getter and setter
}
Maintenant, le type des objets dans la liste des résultats sera Résultat.
List<Result> list=q.list();
Ma question est de savoir si l'objet de résultat peut être sauvegardé au cache de second niveau?
Egalement comment sur le ResultTransformer?
q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
Dans ce cas, le type des objets dans le q.list() sera Carte, ces cartes ne peuvent être mises en cache aussi?