10,多对一,一对多和多对多映射模板
10.1,多对一和一对多模板:
Department与User是一对多的关系
在com.wzh.oa.domain / Department.hbm.xml中
<!-- users属性,描述Department与User的一对多关系 -->
<set name="users" table="oa_user">
<key column="departmentId" />
<one-to-many class="User"/>
</set>
理解:查询对应的所有User对象。从oa_user表中查,依据departmentId字段查,查询
的结果类型是User
在com.wzh.oa.domain / User.hbm.xml中
<!-- department属性,描述User与Department的多对一关系 -->
<many-to-one name="department" column="departmentId" class="Department" />
理解:department属性对应表中的departmentId字段,该字段指向Department类
10.2,多对多模板
User与Role是多对多关系 (使用中间表)
在com.wzh.oa.domain / User.hbm.xml 中:
<!-- roles属性,描述User与Role的多对多关系-->
<set name="roles" table="oa_user_role">
<key column="userId" />
<many-to-many class="Role" column="roleId" />
</set>
在com.wzh.oa.domain / Role.hbm.xml中:
<!-- users属性,描述Role与User的多对多关系
当出现多对多的关系时,需要设置inverse,来确定哪一方来维护表的关联关系
-->
<set name="users" table="oa_user_role" inverse="false">
<key column="roleId" />
<many-to-many class="User" column="userId" />
</set>
10.3,一对一映射
基于外键的一对一映射:
使用many-to-one,需定义外键,需设置unique属性为true
在con.wzh.oa.domain / Topic.hbm.xml中:
<!-- lastReply属性,描述Topic与Reply的一对一关系 -->
<many-to-one name="lastReply" column="lastReplyId" class="Reply" unique="true" />
基于主键的一对一映射:还没使用过
使用one-to-one,