普通查询方式:
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
}
现在,结果列表中对象的类型将是Result。
List<Result> list=q.list();
我的问题是Result Object 是否可以保存在二级缓存中?
还有ResultTransformer怎么样?
q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
在这种情况下, q.list() 中的对象类型将是Map,这些地图也可以缓存吗?