在普通的sql中,为了选取某些列,其实是很简单的,就select 列名就可以了,但在hibernate中,一般都是sql="from user ....";但这样其实某些时候,效率还是很低的,在hibernate做的时候,要这样了,如下:
下面再介绍下相关的知识:
1、 查询其中几个字段
2、修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回
3、要注意的是,假如这时有些列是为空的话,则String hql = " select new list(name,passwd) from Users " ; 是会报错的,要用下面的方法:
4、修改默认查询结果(query.list())不以Object[]数组形式返回,以自定义类型返回
通过query.list()出来的list里存放的不再是默认的 Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里<hibernate-mapping auto-import="true"> auto- import默认值为true(所以auto-import属性也可以不写),自动导入了。
5、 条件查询
假如觉得还是想用回原生SQL的话,可以这样:
就是要注意的话,这里的createSQLQuery里面跟的是原生的sql,要读什么属性,就要不断加addScalar,个人觉得这个方式十分麻烦。