双向一对多
1.在一的一方实体类里添加多的一方的集合
public class Dept { private Integer deptNo; private String deptName; //加入员工集合 private Set<Emp> emps=new HashSet<Emp>(); public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; } public Integer getDeptNo() { return deptNo; } public void setDeptNo(Integer deptNo) { this.deptNo = deptNo; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; }
2.双向的一对多需要在一的一方的小配置里添加<set></set>元素:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.a.happy"> <class name="Dept" table="DEPT"> <id name="deptNo"> <!-- native 数据库方言的可移植性 --> <generator class="sequence"> <param name="sequence">SQE_NUM</param> </generator> </id> <property name="deptName"/> <!-- inverse="false" 主动方 维护关联关系 inverse="true" 被动方 不维护关联关系(不干扰Emp主键生成) --> <!-- 一对多 --> <set name="emps" cascade="save-update,delete" inverse="true" > <key column="deptNo"/> <!-- 一的一方的外键 --> <one-to-many class="Emp"/> <!-- 外键的成员类型 --> </set> </class> </hibernate-mapping>
测试类:
/** * 双向一对多关联测试 * 添加操作 */ @Test public void onVsMuchTest(){ //构建一个部门 Dept dept=new Dept(); dept.setDeptName("就业部"); //构建一个员工 Emp emp=new Emp(); emp.setEmpName("啦啦啦"); //指定员工隶属部门 dept.getEmps().add(emp); //save() session.save(dept); session.save(emp); }
测试成功:
看一下数据库:
DEPT表:
EMP表: