hibernate中不能用left join on的解决办法

hibernate中不能用leftjoinon的解决办法

hibernate中多表查询时,有时需要用到leftjoin,但是不能用leftjoinon。

也就是说,on这个条件是需要写到hbm配置文件中去的。

比如,汽车和车轮这两个对象,我想做下面的查询,,select汽车where车轮=固特异。

其实这个查询很简单,用leftjoin就能实现。但是需要在汽车的hbm配置文件中关联车轮。

HQL语句像这样,select汽车LEFTJOIN车轮where车轮=固特异。

但是如果你不在汽车的hbm文件中建立和车轮的关联,就需要用其他办法了,leftjoinon=no,在hql中没有on这个关键字。

首先说明,这种设计方法并不好,能避免尽量避免。

解决办法有2个。

一个是用普通的多表查询,比如select汽车from汽车,车轮where汽车.id=车轮.属主.idand车轮=固特异。

但是有时候会有重复的记录,需要添加distinct关键字。

另一个是用子查询,比如,select汽车from汽车where汽车.idIN(select车轮.属主.idfrom车轮where车轮=固特异)。

尽量建立关联,直接使用leftjoin是最方便的办法。

相关推荐