前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hibernate合并查询结果集为实体类

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

作者头像
小柒2012
发布2019-12-05 19:00:48
1.4K0
发布2019-12-05 19:00:48
举报
文章被收录于专栏:IT笔记IT笔记

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

hibernate.jpg
hibernate.jpg

说明

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

配置

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

代码语言:javascript
复制
sql="select  u.id,u.name,c.contact_name  from user u,contract c where u.id = c.id" 

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

实体类

代码语言:javascript
复制
@Data                
@NoArgsConstructor     
@AllArgsConstructor
public class UserVo {
    private Integer id;
    private String name;
    private String contactName;
    
}

查询

代码语言:javascript
复制
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();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 配置
    • 实体类
      • 查询
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档