前言:如果你需要将结果集字段顺序按照SQL的书写顺序排列,并且以 List<Map<String,Object>>接收的话。
Query q = this.getCurrentSession().createSQLQuery(sql);
。。。。。。。。。。。。。。。。。。。。。。
q.setResultTransformer(Transformers.aliasToBean(new LinkedHashMap<String, Object>().getClass())).setFirstResult((page - 1) * rows).setMaxResults(rows).list();
此用法所需依赖:
最终效果:
SELECT
s.id AS studentId,
s.name AS studentName,
s.in_dept AS deptId,
d.name AS deptName,
h1.createTime,
h1.updateTime,
h1.userId,
h1.userName,
h1.headImageUrl,
h1.address,
h1.longitude,
h1.latitude,
h1.temperature,
h1.healthStatusCode,
h1.enclosure,
h1.remark
FROM
补充一个额外的:
q.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).setFirstResult((page - 1) * rows).setMaxResults(rows).list();
这种方式底层是采用 hashMap接收的,不能保证顺序。依赖不一定用这个上面那一套依赖也可以,主要是这套依赖得用这个unwrap(NativeQueryImpl.class), 还没去研究。