dept配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="entity.Dept" table="dept">
<id name="did" column="did ">
<generator class="sequence">
<param name="sequence">
seq_dept
</param>
</generator>
</id>
<property name="deptName"></property> <!-- 这个属性不要写错了是property -->
<!-- 配置一对多集合映射 -->
<!--name是Dept类中的集合名
key 用来描述外键
column:外键的值(emp表)
-->
<set name="empSet" cascade="save-update" inverse="true" order-by="EID DESC">
<key column="DEPTID"></key>
<one-to-many class="entity.Emp"/>
<!-- one-to-mony 表达,Customer与orders的关系是一对多
一个部门对应对个员工,所以many后面跟的是Emp这个实体类
-->
</set>
</class>
</hibernate-mapping>
emp配置文
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="entity.Emp" table="Emp">
<id name="eid" >
<generator class="sequence">
<param name="sequence">seq_emp</param>
</generator>
</id>
<property name="empName"></property>
</class>
</hibernate-mapping>
dept实体类
package entity;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
/*
* hibernate实体类
*/
public class Dept implements Serializable {
private Integer did;
private String deptName;
//增加关联集合属性(一对多)//在1的一方,表达持有多的一方的引用=》使用集合(一个部门有多个人员)(这个在一对多的时候用的。比如查找某个部门下的员工)
private Set<Emp> empSet=new HashSet<Emp>() ;//查找某个员工在那个部门用不到这个(多对一)
public Dept() {
super();
// TODO Auto-generated constructor stub
}
public Dept(Integer did, String deptName, Set<Emp> empSet) {
super();
this.did = did;
this.deptName = deptName;
this.empSet = empSet;
}
public Integer getDid() {
return did;
}
public void setDid(Integer did) {
this.did = did;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public Set<Emp> getEmpSet() {
return empSet;
}
public void setEmpSet(Set<Emp> empSet) {
this.empSet = empSet;
}
}
emp实体类
package entity;
import java.io.Serializable;
public class Emp implements Serializable {
private Integer eid;
private String empName;
//private Dept dept; 外键,在这里不用这,直接管理另一个类的属性
private Dept dept;//关联属性
public Emp(){
}
public Emp(Integer eid, String empName, Dept dept) {
super();
this.eid = eid;
this.empName = empName;
this.dept = dept;
}
public Integer getEid() {
return eid;
}
public void setEid(Integer eid) {
this.eid = eid;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
}
测试类
测试类
package Test;
import org.hibernate.Session;
import entity.Dept;
import entity.Emp;
import Util.HibernateUtil;
public class Test {
public static void main(String[] args) {
Session session = HibernateUtil.currentSesion();
Dept dept = (Dept) session.load(Dept.class, 3);
System.out.println(dept.getDeptName()+"所包含员工如下:");
for (Emp e : dept.getEmpSet()) {
System.out.println(e.getEmpName());
}
}
}