? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? " />
当前位置: 首页 > >

Hibernate left join(左连接…

发布时间:

原文地址:Hibernate?left?join(左连接)
作者:天涯恨客


Hibernate?left?join一直是困扰我的一个问题,因为对hibernate的关联映射不怎么了解,写的Hql也全部是从sql翻译过来,虽然也是大同小异,因此左连接一直不会用。


其实很简单:


1、先把关联映射配好


User.hbm.xml


package="com.xieqing.crm.user">


name="User"?table="tbl_user">


? ?name="id"?column="id">


? ?? ?class="native"/>


? ?


? ?name="truename"?not-null="true"?column="truename"?length="32"/>


? ?name="sex"?column="sex"?length="1"/>


? ?name="phone"?column="phone"/>


? ?name="roomId"?column="room_id"??not-null="false"/>


? ?name="room"?class="com.xieqing.crm.room.Room"?column="room_id"?


? ?? ?? ?insert="false"?update="false"/>






?


Room.hbm.xml


package="com.xieqing.crm.room">


name="Room"?table="tbl_room">


? ?name="id"?column="room_id">


? ?? ?class="native">


? ?


?? name="roomName"?not-null="true"?column="room_name"?length="32"/>


? ?name="users">


? ?? ?column="room_id">


? ?? ?class="com.xieqing.crm.user.User"?not-found="ignore"/>


? ?




???


?


User.java


public?class?User{


????private?Integer?id;


? ? private?String?truename;


? ??private?String?phone;


? ??private?int?sex;


? ??private?Integer?roomId;


? ??private?Room?room;


//?省略Getter?setter方法


}




?


Room.java


public?class?Room?{


? ??private?Integer?id;


? ??private?String?roomName;


? ??private?Set?users;


//?省略Getter?setter方法


?


}


?


tbl_user?





?


tbl_room?





?


//?注意:这里连接的就是User.java里的room属性了,?改了这里就OK啦。如果后面要加条件就 ? ? ? ? ? ??


? ? ? ? ?with?SQL是用的on


String?hql?=?"select?u?from?User?u?left?join?u.room";


List?userList?=?this.getHibernateTemplate().find(hql).list();


System.out.println("size----"+userList.size());


for(User?u?:?userList)?{


? ? System.out.println(u.getId()?+?"?---?"?+?u.getTruename());


}


?


执行该查询将把tbl_user表中的4个人都查出来。



友情链接: 时尚网 总结汇报 幼儿教育 小学教育 初中学习资料网