Hibernate中一对多的关联关系

还是参照员工与部门的例子,从员工角度看,员工与部门是多对一的关联;而从部门角度

 

看,部门与员工则是一对多的关系,需要修改的代码如下:

 

部门类 (Department.java):

 

public class Department {

       private int id ;
       private String name ;
       
       private Set emps ;             // 用于员工的集合

     ...getter/setter
}

 

部门对应的映射文件 (department.hbm.xml):

 

......

<class name="Department">

...
     <set name="emps">         // Department类中的集合变量
               
               <key column="depart_id"/>                // 外键,employee表中的字段
               <one-to-many class="Employee">      // 集合中存放的对象

     </set>
...

</class>

......

 

测试代码,首先添加一个部门信息,然后添加两个员工信息,最后查询部门信息,看查询结

 

果是否能查询到那两个员工的信息,代码如下:

 

.......

// 省略了一些Hibernate代码

/*
    1. 实例化一个部门信息
*/

Department depart = new Department () ;
depart.setName ("depart name") ;

/*
    2. 实例化两个员工信息
*/

Employee emp1 = new Employee () ;
emp1.setDepart (depart) ;
emp1.setName ("emp1 name");

Employee emp2 = new Employee () ;
emp2.setDepart (depart) ;
emp2.setName ("emp2 name");

/*
    3. 查询此部门信息,然后查看其下的员工数目是否为2个
*/

// 省略部分代码

Department depart = (Department)s.get (Department.class , departid) ;
Systemt.out.println ("emp size:" + depart.getEmps().size () ) ;

/*
    4. 调用3中的方法,传一个部门编号为1
*/

首先查询部门表,查询部门编号为1的部门信息,然后再从员工表中查询部门编号为1的员工信息,所以输出结果为2,为什么会按部门编号在员工表中查询呢?主要原因是在department.hbm.xml文件中配置了<key column="depart_id"/>


......

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值