hibernate纯sql查询结果集映射为DTO(VO,DO)
来源:互联网 发布:软件咨询合同 编辑:程序博客网 时间:2024/05/21 10:56
原文连接:点击打开链接
假设我们现在有一个DTO,其属性包括两张表的属性,我们现在需要将sql语句查询得到的内容转为一个DTO对象,其解决方法如下:
String sql = "select u.userName as userName ,p.title as title ,p.addTime as addTime from user as u,post as p where u.id=p.userId" Query q = factory.getCurrentSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(PostVO.class));
上面select中as后面的内容必须和PostVO中属性名一致,这样就可以返回一个针对PostVO的一个集合。
其实大家可以看下hibernate这一部分的源码就会发现,主要是使用了AliasToBeanResultTransformer这个类,通过sql的查询,会返回数组,然后hibernate根据数据表的映射,自动帮我们来set对应的字段属性,所以标红的部分务必要跟VO中的属性值一直,要不然会报错的。
如果需要的话,大家也可以重写这个类。例如VOResultTransformer。然后在dao中更改成:
setResultTransformer(new VOResultTransformer(PostVO.class));
另外,除了以上glamey的方法外,还有一种方法:
Query q = session.createQuery("select new com.hibernate.MsgInfo(m.id, m.cont, m.topic.title, m.topic.category.name) from Msg m");List<MsgInfo> list=q.list();
其中,MsgInfo是DTO。值得注意的是,第二种方法中DTO必须提供带参数的构造方法,并且HQL语句中属性的位置要与构造方法中的位置一一对应。
0 0
- hibernate纯sql查询结果集映射为DTO(VO,DO)
- hibernate纯sql查询结果集映射为DTO(VO,DO)
- hibernate将sql或hql查询结果集映射为实体类 不需要映射文件
- POJO、VO、DTO、DO
- po,do,vo,dto
- 浅析vo,dto,do
- 浅析vo,dto,do
- DO / DTO / BO / VO
- VO DTO DO PO
- VO,DTO,DO,PO
- DO VO PO DTO
- Hibernate对原生sql处理及结果集和VO的映射
- 解决Hibernate原生SQL映射问题 - SQL查询出来的结果映射为值对象
- Hibernate执行原生sql将查询结果直接转为VO
- VO DTO DO PO概念
- VO、DTO、DO和PO
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
- 第11周项目1.
- OllyDBG破解入门教程[图&文]教程
- 算法导论 学习问题
- 储存班长信息的学生类
- tomcat配置ssl,https
- hibernate纯sql查询结果集映射为DTO(VO,DO)
- 奇虎360与腾讯不正当竞争案判决书
- CentOS 6.5 安装私有gitlab环境
- Ironjs
- bootstrap搜索图标的使用
- 网络相关知识点整理
- 自定义WebConfig
- Windows下,Eclipse的Android NDK(r8e) 配置
- git 版本控制系统