关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
来源:互联网 发布:win7软件乱码 编辑:程序博客网 时间:2024/05/21 22:59
相信用过hibernate的兄弟们都会因为多表复杂查询后,为返回的结果如何组装到一个VO中而烦恼不已。我也不停的为此而烦恼,但是在看了hibernate的transform后,感觉这个方法还挺管用的。
例如现在有两张表,一张是user表,放了一些用户的信息,另外一张表是用户发表的帖子,里边有一个user的外键。我们需要查询出来,某个人发布的帖子,sql如下:
select u.userName, p.title, p.addTime
from user as u,post as p
where u.id=p.userId
但是我们的POJO映射仅仅是做了user,post表的映射,这个时候,我们需要写一个PostVO类,里边放着了用户的信息和帖子的信息的属性,设置get\set方法,务必保证这个类里边有一个默认的构造函数。
然后我们开始写这个数据库操作的dao,代码如下:
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));
红字部分必须跟PostVO中的属性一直,这样就可以返回一个针对PostVO的一个集合。
其实大家可以看下hibernate这一部分的源码就会发现,主要是使用了AliasToBeanResultTransformer这个类,通过sql的查询,会返回数组,然后 hibernate根据数据表的映射,自动帮我们来set对应的字段属性,所以标红的部分务必要跟VO中的属性值一直,要不然会报错的。
如果需要的话,大家也可以重写这个类。例如VOResultTransformer。然后在dao中更改成
setResultTransformer(new VOResultTransformer(PostVO.class));
原帖地址:http://glamey.iteye.com/blog/721019
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
- Hibernate原生sql查询返回结果问题
- hibernate使用原生SQL查询返回结果集的处理
- 关于Hibernate的sql查询返回值的问题
- hibernate关联查询纯SQL的实现(mysql)
- hibernate的关联关系hbm.xml配置模板
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理
- hibernate 树状自关联 *.hbm.xml 配置
- hibernate 关联查询结果的处理
- 关于Hibernate中SQL查询结果的数据结构
- hibernate中的sql语句写在xxx.hbm.xml中解决hibernate中原生sql的硬编码问题
- 关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题
- hibernate下hql与sql查询结果的问题
- ORACLE关于返回结果集的问题
- 关于hibernate中hbm.xml文件报错的解决
- JAVA命名规范总结
- JSP静态包含和动态包含问题
- java 之 classpath下文件路径
- [转]c#拼音汉字转化
- 关于platform_driver 是如何匹配 platform_device的和如何调用到platform_driver中的probe函数的研究
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
- iPhone/iPad开发札记 2012/02/24
- 第8题 把字符串转换成整数输出
- 上班发喜糖一定要在同事上班后发
- 一个修改MYSQL密码的BAT代码,不在为忘了密码而进行复杂的操作
- visual studio 添加调试串口
- 查出PT最后一次修改时间
- C++ Builder 在图形中绘制
- JS加入收藏夹