Hibernate一对多,多对一,多对多,一对一关系配置汇总
本文中用到的三个实例化类分别为Customer(保存客户基本信息),CustomerDetails(保存客户详细信息),CustomerBack(中间表,保存两表之间的关联)
对应的表功能同上.
说明中的主表指Customer,子表指CustomerDetails,中间表指CustomerBack
?
一对多
<set name="CustomerBack" table="customer_back" cascade="all"> <key column="cust_Id"/> <many to many class="CustomerDetails" column="custD_id"/> </set>?
多对多的配置与一对多有点类似.这段代码放的位置也是与一对多的代码放的位置一样.
多对多关系中,多采用中间表来关联两个有多多关系的表的.如Customer与CustomerDetails存在多对多的关系,那么往往是用另外一个表如CustomerBack表来保存它们的关系的,也就是中间表.
name:属性的名称(可理解为中间表的名称)
table:表的名称(可理解为中间表的表名称)
key 里的cust_Id,是指中间表的cust_Id,为了保存Customer与CustomerDetails的关系,中间表中分别建了cust_Id(Customer的主键)与custD_Id(CustomerDetails的主键)
many–to–many中的Class是指多对多中的另一个实例化类,column是指CustomerDetails与中间表关联的字段名.这里是指中间表的custD_Id,不能理解为CustomerDetails的主键.
?
一对一
<one to one name="CustomerDetails" class="CustomerDetails" cascade="all" />
?
一对一的关系更简单.
在Customer表的配置中放上这段代码就行了.
name:属性名称
class:关联的实例化类名
?