Hibernat Criteria 控制连接方式问题(如:inner join变left outer join)

大家好,第一次发贴,望大家多多指教.

问题背景:
我需要用Criteria或DetachedCriteria查一个到多个表的某几个字段.(因为要只查某几个字段,所以用了Projection,不知有没有其他方法?)
[code]
DetachedCriteria criteria = DetachedCriteria.forClass(Company.class);
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Property.forName("companyName"));
projectionList.add(Property.forName("C.cityName"));
projectionList.add(Property.forName("A.areaName"));
criteria.createAlias("city", "C")
.createAlias("area", "A")
.setProjection(projectionList);
return getHibernateTemplate().findByCriteria(criteria);[/code]
打印出来的sql语句是:
[code]
select .... from company C inner join City C1 on C.city_id=C1.city_Id
inner join area A on C.area_id=A.area_id;
[/code]

以前没有用projection时可以用下面的代码来达到生成left outer join sql的效果
[code]
DetachedCriteria criteria = DetachedCriteria.forClass(Company.class);
criteria.setFetchMode("city", FetchMode.JOIN);
criteria.setFetchMode("area", FetchMode.JOIN);
return getHibernateTemplate().findByCriteria(criteria);[/code]

问题:
1. 怎样才能变成用left outer join查询而不用inner join?
2. 这个问题顺便问问,查一个到多个表的某几个字段时,查询结果是Object[],能不能让它返回要查询的那个对象,而只有要查的几个field有值,其他为空?

望大家能指点一二,谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值