当前位置:Gxlcms > 数据库问题 > 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)

关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)

时间:2021-07-01 10:21:17 帮助过:2人阅读


然后我们开始写这个数据库操作的dao,代码如下:

Java代码 
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中更改成

Java代码 
setResultTransformer(new VOResultTransformer(PostVO.class));

即可。

关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)

标签:

人气教程排行