之前在项目中使用的Spring的jdbcTemplate直接执行sql语句的,由于客户方要求sql全部写到hibernate配置文件,则改用Hibernate的Query执行SQL语句,从文件读取。最终查询结果使用阿里巴巴的fastjson转换json,这样就需要标准的List<Map>才可以,但Hibernate使用Query.list()获取到的结果集,调试查看可以看到是List<Object>类型的,转换JSON全部变成了数组,而且只有值,没有键。
在网上查找资料,发现Hibernate查询可以直接设置结果值类型为List<Map<String,Object>>,方法是在执行query.list()或者其他查询方法之前,
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);