集合属性的映射
- 一个集合对应一个集合表。
- 使用集合属性时,一定要使用接口,而不能声明为具体的实现类。因为经过Session操作后,集合就变成了Hibernate自己的集合实现类
值类型的集合
一. Set集合
1、常见属性:
2、示例:
<set name="emps" lazy="false" cascade="save-update" sort="unsorted" order-by="deptId ASC" inverse="true">
<key column="deptId"></key>
<one-to-many class="com.qhit.lh.g4.jay.t2.bean.Emp"/>
</set>
二. List集合
1、注意:
i,由于list集合时有序的,所以在集合表中需添加一列,用来作为联合主键,使查询结果有序。
ii,list-index子元素标签:用来存放索引的列
2、示例:
<list name="emps" lazy="false" cascade="save-update" inverse="true">
<key column="deptId"></key>
<list-index column="idx"></list-index>
<one-to-many class="com.qhit.lh.g4.jay.t2.bean.Emp"/>
</list>
三. Map集合
1,注意:
与list集合相似,较Set集合表多出一列,用来表示key
2,示例:
<map name="emps" table="t_emp">
<key column="deptId"></key>
<map-key type="string" column="key_"></map-key>
<element type="string" column="name"></element>
</map>
四. 数组
1,注意:
跟list集合类似
2,示例:
<array name="emps" table="t_emp">
<key column="deptId"></key>
<list-index column="idx"></list-index>
<element type="string" column="name"></element>
</array>
五. bag集合:
1,注意:
无序,可重复,与Set集合的映射基本一致
2,示例:
<bag name="emps" lazy="false" cascade="save-update" inverse="true">
<key column="deptId"></key>
<one-to-many class="com.qhit.lh.g4.jay.t2.bean.Emp"/>
</bag>