1.前者用的hql语句进行查询,后者可以用sql语句查询。
2.前者以hibernate生成的Bean为对象装入list返回,后者则是以对象数组进行存储。
3.前者在查询时查询条件的类型需要和对象对应的属性的类型一致。例如查询时间类型的字段,前者需要用时间类型,而后者只要是时间格式的字符串即可。
使用createSQLQuery有时候也想以hibernate生成的Bean为对象装入list返回,这个方法可以直接转换对象
Query q = getSession().createSQLQuery(hql).addScalar("YY1").addScalar("YY2").addScalar("YY3");
q.setResultTransformer(Transformers.aliasToBean(XXXX.class));
XXXX 代表以hibernate生成的Bean的对象,也就是数据表映射出的Bean。YY表示查询出来的列对应到对象中的某个属性。