一对一:
主控方:(Channel)
<one-to-one name="channelCount" class="ChannelCount" cascade="all"(级联关系)>
</one-to-one>
约束方:(ChannelCount)
<id name="id" type="java.lang.Integer" column="channel_id">
<generator class="foreign"></generator>
</id>
<one-to-one name="channel" class="Channel" constrained="true"(约束)>
</one-to-one>
双向一对多:user (一) 表 address(多)
user: <set name="address" inverse="true" cascade="all" table="address">
<key column="user_id"></key>
<one-to-many class="Address"/>
</set>
inverse:控制反转,由address控制;
cascade:级联操作,只要user有改变或删除address也会改变删除
address:<many-to-one name="user" class="User" cascade="none" column="user_id" >
</many-to-one>
多对多:(需要中间表) role(角色) group(分组) group_role(中间表)
role:<set name="groups" table="group_role" lazy="false" cascade="save-update">
<key column="role_id"></key>
<many-to-many class="Group" column="group_id">
</many-to-many>
</set>
group:<set name="roles" table="group_role" lazy="false" cascade="save-update">
<key column="group_id"></key>
<many-to-many class="Role" column="role_id">
</many-to-many>
</set>