一对多关系
1.一对多关系(单向):
在一端映射文件中加入:
<setname="student">
<keycolumn="classesid"/>
<one-to-manyclass="Student" />
</set>
2.一对多关系(双向):
(1).在一端映射文件中加入:
<setname="student">
<keycolumn="classesid"/>
<one-to-manyclass="Student" />
</set>
(2).在多的一端加入:
<many-to-onename="classes" column="classesid"></many-to-one>
多对一关系
在多的一端加入:
<many-to-one name="classes"column="classesid"/>
一对一关系
1. 一对一外键关联
单向:(它其实就是一个多对一映射的一个特例,只是设置unique=”true”)
在维护关系一端的映射文件中加入:<many-to-onename="card" unique="true"cascade="all"></many-to-one>
双向:
在维护关系一端的映射文件中加入:<many-to-onename="card" unique="true"cascade="all"></many-to-one>
在另一段的映射文件中加入:
<one-to-onename="users" property-ref="card"></one-to-one>
由于 <one-to-one name>标签默认是找关联主键,所以在这里需要property-ref="card" 配置关联属性。Cascade属性是级联的意思。
2. 一对一主键关联
a) 单向
在维持关系一端的代码:
<classname="com.Connection.oneTOone.User_pk" >
<idname="id">
<generator class="foreign">
<paramname="property">card_pk</param>
</generator>
</id>
<propertyname="name" unique="true"></property>
<one-to-onename="card_pk" constrained="true"></one-to-one>
</class>
设置<generator class="foreign"> class="foreign" 这是特定的。
constrained="true" 设置该实体的主键是card_p的外键。
b) 双向
在维持关系一端的代码:
<classname="com.Connection.oneTOone.User_pk" >
<idname="id">
<generator class="foreign">
<paramname="property">card_pk</param>
</generator>
</id>
<propertyname="name" unique="true"></property>
<one-to-onename="card_pk" constrained="true"></one-to-one>
</class>
设置<generator class="foreign"> class="foreign" 这是特定的。
constrained="true" 设置该实体的主键是card_p的外键。
在维持关系的另一端的代码:
加入:<one-to-one name="user_pk"/>
多对多关联映射
单向:
在维持关系一端的映射文件中加入:
<set name="popedoms" table="t_user_role">
<key column="userid"/>
<many-to-manyclass="com.hibernate.bean.Popedom"column="popedomid"/>
</set>
它会再创建一张表: <key column="userid"/>引用当前主键做为表的外键。<many-to-manyclass="com.hibernate.bean.Popedom"column="popedomid"/>,指定某表的主键做为它的外键。
双向:
在两边都要加入相对的配置信息:
甲方:
<set name="popedoms"table="t_user_role">
<key column="userid"/>
<many-to-manyclass="com.hibernate.bean.Popedom"column="popedomid"/>
</set>
乙方:
<set name="user" table="t_user_roles">
<key column="popedomid"/>
<many-to-many class="com.hibernate.bean.User"column="userid"/>
</set>
其中要注意的是,两边配置信息的表名和字段名要一致。