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是最方便的办法。
相关推荐
86377811 2020-11-06
gcttong00 2020-08-13
82357015 2020-07-25
89721493 2020-06-11
zhuhuaiyu 2020-01-09
zhangbdaxia 2020-01-07
waitui00 2019-12-31
83357869 2019-12-29
CristianoJason 2019-12-25
mohanzb 2019-12-20
banlanxiaoxue 2019-12-21
qianft 2019-12-17
waitui00 2019-11-14
89701197 2019-11-06
Castanea 2019-11-04
HouchaoqunXMU 2019-10-31
hiarxiaoliang 2019-10-31
dcbeyond 2019-09-05