普通属性:
单行
<property name="属性名" type="属性简单类型" column="字段名" not-null="true/false"/>
多行
<property name="属性名" type="属性简单类型">
<column name="字段名" not-null="xxx"/>
</property>
多对一:
单行
<many-to-one name="属性名" class="属性类" column="外键字段名" not-null="true/false"/>
多行
<many-to-one name="属性名" class="属性类">
<column name="外键字段名" not-null="true/false"/>
</many-to-one>
一对多:
<set name="属性名" cascade="delete" inverse="true">
<key column="外键字段名" />
<one-to-many class="对方关联类"/>
</set>
多对多:
<set name="属性名" table="中间表名">
<key column="中间表中*自己*的外键字段名" />
<many-to-many column="中间表中*对方*的外键字段名" class="对方关联类" />
</set>
=============================================================================================================
多对一:
在多的一方保存、更新时,一的一方会级联的保存、更新,但删除例外
为了避免异常,多的一方的级联操作一般不写
一对多:在实体类用Set集合,映射文件hbm.xml中
<set name="属性名" cascade="级联操作">
<key column="外键字段名" />
<one-to-many class="对方关联类"/>
只有在一的一方删除时,多的一方会级联的删除,其他操作无效
只有多对一 = 单向关联
多对一 + 一对多 = 双向关联
多对多:双方实体都用Set集合,映射文件hbm.xml中
<set name="属性名" table="中间表名">
<key column="中间表中*自己*的外键字段名" />
<many-to-many column="中间表中*对方*的外键字段名" class="对方关联类" />
</set>