二、List集合映射
1. 实体类:
实体类还是采用Department和Employee,详见我写的多对一(many-to-one)文章,在它们的基础上进行修改如下所示:
将原Department实体类中的Set替换成List,如下所示:
Java代码
package com.reiyen.hibernate.domain;
public class Department {
private int id;
private String name;
private List<Employee> emps;
//Setter和Getter方法
}
package com.reiyen.hibernate.domain;
public class Department {
private int id;
private String name;
private List<Employee> emps;
//Setter和Getter方法
}在原Employee实体类中增加了重写的toString()方法,方法如下:
Java代码
@Override
public String toString() {
return "id=" + this.id + " name=" + this.name;
}
@Override
public String toString() {
return "id=" + this.id + " name=" + this.name;
} 2. 配置文件:
修改Department.hbm.xml配置文件,其它的还是保持以前的不变,修改的Department.hbm.xml配置文件如下:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.reiyen.hibernate.domain">
<class name="Department" >
<id name="id" >
<generator class="native" />
</id>
<property name="name" />
<!--
<set name="emps">
<key column="depart_id" />
<one-to-many class="Employee"/>
</set>-->
<list name="emps">
<key column="depart_id" />
<!-- list-index:用来记录加入list集合的元素的顺序 ,会一定程度影响性能,所以可以使用bag替代list-->
<list-index column="order_col" />
<one-to-many class="Employee"/>
</list>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.reiyen.hibernate.domain">
<class name="Department" >
<id name="id" >
<generator class="native" />
</id>
<property name="name" />
<!--
<set name="emps">
<key column="depart_id" />
<one-to-many class="Employee"/>
</set>-->
<list name="emps">
<key column="depart_id" />
<!-- list-index:用来记录加入list集合的元素的顺序 ,会一定程度影响性能,所以可以使用bag替代list-->
<list-index column="order_col" />
<one-to-many class="Employee"/>
</list>
</class>
</hibernate-mapping> 3.测试类(只是对many-to-one中的测试类进行了少量的修改),如下所示: