在hibernate中想使用left join 查询

2025-02-23 16:36:59
推荐回答(2个)
回答1:

HQL不支持on关键字,如果要多表联查可以在hbm.xml中配置关联映射,并修改实体类配合映射,然后使用
select x1 from t1 left join fetch t2 where t2.xx = ?
这种形式将关联属性以表连接形式抓取出来。(具体配置可搜索hibernate关联映射,网上很多)
http://zhidao.baidu.com/question/1510387721289164620.html?oldq=1

回答2:

直接可以当hql用啊。
SQLQuery quuery = this.getHibernateTemplete().createSQLQuery(sql);

List list = query.list();

然后循环就可以了 ,这里的Object[]要有一些类型转换哦

如果你非要用hibernate对象的话,需要建立一个对象,包含查询的4个数据的对象(如:MessageInfo)。并包个一个4个参数的构造方法,hql如下
select new MessageInfo( a.servno,a.servname,b.contents,c.deptname) from t_serviceitem a
left join vs_servexplan b on a.servno=b.servno and b.explantype=1
left join t_department c on a.servdept=c.deptcode where 1=1
这样的语句就可以了,不过三个表名要换成类名,不然就不对了