您的位置:首页 > 其它

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

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



说明

一般来说,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
@AllArgsConstructor
public 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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate 合并 对象