hibernate native sql

来源:互联网 发布:lu分解 算法 编辑:程序博客网 时间:2024/04/27 17:13
1.直接返回List结果集,不包括列名信息

List ls = session.createSQLQuery(querySql).list();

如果当前查询SQL里包括多列,则List里每行存放的是Object数组,如果直接查询的是一列,则每行存放的则直接就是查询的哪一列的数据。
也可以在返回的结果数据里指定每一列的类型
List ls2 = session.createSQLQuery(querySql).addScalar("column_name", Hibernate.DATE).list();
这样返回的数据的时候Hiberante就会对返回的数据转换成你指定的数据类型.这个是在3.1版本就支持的操作。

2.返回包括列名信息,可以是数据每行转换成一个Map形式。则KEY对应列名,VALUE对应当前列的值
实现方法如下:

List ls3 = session.createSQLQuery(querySql).setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP).list();

这样返回的结果集每行就是Map(key:column,value:columnValue);还可以使用其他的一些Hibernate定义好的一些ResultTransformer方法的实现类。具体可以参考org.hibernate.criterion.CriteriaSpecification里定义的一些。
当然列可以实现自己的数据组装方法,只需要实现ResultTransformer接口就行了。
注意:ResultTransformer实现新版本的Hibernate才支持


以上例子说明的两种方法是没有Hibernate的mapping对象的概念。直接和JDBC返回的结果差不多。
如果想支持返回数据为Hibernate的Entity可以具体参考Hibernate参考文档里的 Native SQL查询一章的实现方法。 
原创粉丝点击