一、一对多映射
如快递网点(ExpSite)与快递员(Deliver)的关系,即为一对多关系,一个快递网点有多个快递员,他们的关系如下图所示。
在一对多中,外键在多的一方
(1)在多的一方配置外键
Deliver表为多方,在Deliver实体类中放一个ExpSite方的引用做属性(外键),即所属网点ExpSiteId;
Deliver实体类配置文件:
<many-to-one name="ExpSiteId" class="ExpSite表所在的包名+ExpSite表的名" column="ExpSiteId(外键字段)"></many-to-one>
(2)在一这方配置集合属性
ExpSite表为一方,在ExpSite实体类中放一个Deliver方的Set集合做属性,假设是 Set<Deliver> deliverList= new HashSet<Deliver>();
<set name="deliverList">
<key column="ExpSiteId(外键字段)"></key>
<one-to-many class="Deliver表所在的包名+Deliver表的名"></one-to-many>
</set>
二、多对多映射
A表和B表为多对多关系:
以A表的实体类配置文件举例:
在A实体类中放一个B方的Set集合做属性,假设是 Set<B> bbb = new HashSet<B>();
<set name="bbb"table="中间表名">
<!-- 自己表对应中间表中的外键-->
<key column="A表在中间表中的外间字段"></key>
<many-to-many class="B表所在的包名+B表的名" column="B表在中间表中的外间字段"></many-to-many>
</set>
B表的实体类配置文件类似