Hibernate合并查询结果集为实体类

来源:互联网 发布:淘宝店铺注册三个流程 编辑:程序博客网 时间:2024/05/06 03:50

用过mybatis的小伙伴可能都知道,我们可以查询两个表的部分字段合并为一个实体。然而用了Hibernate这么久了,居然还不知道也有此神器。

hibernate.jpg

说明

一般来说,Hibernate中我们常用的有以下几个功能
1.查询全部字段的情况下,如”from 实体类”,list中封装的对象为实体类本身,各属性都将得到填充。
2.只查询一个字段,默认情况下,list中封装的是Object对象。
3.查询两个或两个以上的字段,默认情况下,list中封装的是Object[],长度与所查询的字段数一致。
4.查询部分字段,与数据库保持一致,在hql中使用select new 包名.类名(属性1,属性2……) from 实体类,同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致,这样我们得到的list中存放的依然是实体类的对象,所查询到的属性得到了填充,使用起来更为方便。

配置

如果,我们想查询两个表的部分字段并以实体类的方式展示,如下:

sql="select  u.id,u.name,c.contact_name  from user u,contract c where u.id = c.id" 

这条sql里面的user 和contract 是两个实体类,现在组合查询分别取出来两个实体类里面的部分字段,然后建立一个实体类Result。

实体类

@Data                @NoArgsConstructor     @AllArgsConstructorpublic class UserVo {    private Integer id;    private String name;    private String contactName;}

查询

String  sql="select  u.id,u.name,c.contact_name  from user u,contract c where u.id = c.id"                 Query query = session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(UserVo.class));                return (List<UserVo>)query.list();
阅读全文
0 0