`

七 一对多关系 部门与员工的关系

 
阅读更多
一对多 部门与员工的关系 相对于部门来说 一对多 
根据先前的程序部门部分修改 员工的实体不做修改 

部门 
package vo.util.bean;

import java.util.Set;

/**
 * 部门类
 * @author Administrator
 *
 */
public class Department {
  private int id;
  private String name;
  //新加入Set集合 引入泛型 存入员工属性 
  private Set<Employee> ems;
public int getId() {
	return id;
}
public Set<Employee> getEms() {
	return ems;
}
public void setEms(Set<Employee> ems) {
	this.ems = ems;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
}

映射文件修改
<?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="vo.util.bean">

	<class name="Department">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<!-- 配置一对多的映射关系  -->
		<set name="ems">
		<!-- 关联关系的外键  -->
		<key column="depaer_id"/>
		   <!-- 关联关系的实体类配置 -->
		  <one-to-many  class="Employee" />
		</set>
	</class>
	
</hibernate-mapping>

测试

package vo.util.test;

import org.hibernate.Session;
import org.hibernate.Transaction;

import vo.util.HibernateUtil;
import vo.util.bean.Department;
import vo.util.bean.Employee;

public class OneToMany {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	
         add();
        query(1);
	}
    static Department add(){
    	Session session = null;
    	Transaction tx = null;
    	try{
    		session =HibernateUtil.getSession();
    		tx = session.beginTransaction();
    		//…你的代码save,delete,update,get…
    		Department dpart=new Department();
    		dpart.setName("政企事业部");
    		
    		Employee em1=new Employee();
    		em1.setName("员工李小仙");
    		em1.setDerpartment(dpart);
    		
    		Employee em2=new Employee();
    		em2.setName("员工张小三");
    		em2.setDerpartment(dpart);
    		session.save(dpart);
    		session.save(em1);
    		session.save(em2);
    		
    		
    		tx.commit();
    		return dpart;
    	}finally{
    		if(session != null)session.close();
    	} 

    }
    
    static Department query(int id){
    	Session session=null;
    	
    	try{
    	   session=HibernateUtil.getSession();
    	   Department d=(Department)session.get(Department.class, id);
    	   
    	   System.out.println(d.getName()+"--------->"+d.getEms().size());
    	  
    		return d;
    	}finally{
    		if(session != null)session.close();
    	} 

    }
}


注意点:一对多的关系中 对于主控制方的实体 引入Set<>泛型进行从方数据录入 
对于其映射文件 利用<set> <key> <one-to-many>进行关联从表数据 

end 完毕!

 

分享到:
评论

相关推荐

    8 映射-- 一对多(部门对员工)

    - 一对多关系是实体之间的一种关联,表示一个实体(如部门)可以与多个其他实体(如员工)相关联。在数据库中,这通常通过在多方(员工)的表中添加一个外键字段来实现,该字段引用一方(部门)的主键。 2. **映射...

    Spring+Hibernate一对多关联映射---部门与员工表的级联添加

    本教程将深入探讨Spring和Hibernate结合使用时的一对多关联映射,特别是部门与员工表的级联添加。 在数据库设计中,一对多关联是一个常见的关系类型,例如一个部门可以有多名员工,但每个员工只能属于一个部门。在...

    EJB3一对多和多对一关系映射实例

    在现实世界中,一对多关系非常常见,例如一个班级有多名学生,一个部门有多名员工。在EJB3中,我们可以通过`@OneToMany`注解来表示这种关系。以下是一个简单的例子: 1. 定义父类("多"的一方): ```java @Entity ...

    关于关系型数据库基本知识(主键、外键、一对一、一对多、多对一等).docx

    一对多关系是常见的设计模式,一个表的记录对应另一个表的多条记录。例如,一个部门可以有多名员工,部门表和员工表之间就形成了一对多的关系。多对一关系是从一对多的另一个角度看,如员工表中的部门ID可以是部门表...

    EF6多对多,一对多关系映射样例代码

    在本示例中,我们将深入探讨如何在EF6中配置和使用多对多和一对多关系,特别是针对Oracle数据库的配置。 首先,多对多关系是指两个实体类型之间存在多个连接,每个实体都可以关联到多个实例。例如,一个学生可以...

    JPA_2_一对多双向关联关系

    在JPA中,一对多关联关系是常见的实体间关系类型,它表示一个实体可以与多个其他实体相关联。例如,一个学生可以有多个课程,一个部门可以有多名员工。在这个场景中,我们将深入探讨如何在JPA 2中实现一对多双向关联...

    部门表、员工表和工资等级表的SQL文件

    部门ID是唯一标识每个部门的关键字段,而部门名称则提供了对部门的直观描述。 接下来是“员工表”。员工表会记录每位员工的信息,如员工ID(EmployeeID)、姓名(EmployeeName)、部门ID(DepartmentID,用于关联到...

    7 映射-- 多对一(员工对部门)

    本文将深入探讨“7 映射-- 多对一(员工对部门)”这一主题,它主要涉及Java持久化框架Hibernate中的对象关系映射(ORM)技术。 在企业信息系统中,员工和部门的关系通常表现为多对一的关系。这意味着一个部门可以有...

    11_JPA详解_JPA中的一对多延迟加载与关系维护.zip

    本资料主要探讨的是JPA中的一对多关系以及延迟加载机制,这两部分是JPA使用中的关键概念。 **一对多关系** 在关系数据库中,一对多关系是最常见的一种关联类型。例如,一个部门可以有多名员工,而每个员工只能属于...

    hibernate一对多关系

    在数据库设计中,一对多关系是非常常见的一种关系类型,比如一个部门可以有多个员工,一个学生可以选修多门课程等。在Hibernate中,这种关系通过在映射文件或者注解中设置来实现。 首先,我们需要理解一个实体类...

    参考资料-员工关系管理.zip

    企业需要建立多渠道的沟通平台,如定期的员工大会、部门会议、一对一反馈等,确保信息的透明度和双向流通,增进理解和信任。 4. **激励机制**:激励机制包括物质奖励(如薪酬、福利)和非物质奖励(如晋升机会、...

    MyBatis高级映射(一对多查询)

    在数据库关系模型中,一对多关系是常见的关联类型,例如一个学生可以对应多个课程,一个部门可以有多个员工等。MyBatis提供了一对多映射功能,使得在Java对象中可以直接获取到这种关联关系的数据。 1. **配置一对多...

    员工部门管理系统

    员工部门管理系统是一款基于Java Web技术并利用SSH(Struts2、Spring、Hibernate)三大框架构建的应用软件,主要用于企业内部的人力资源管理,尤其是对员工及其所在部门进行高效、精确的管理。下面将详细介绍SSH框架...

    员工关系管理之非人力资源部门.docx

    【员工关系管理之非人力资源部门】是组织内部一个重要的领域,尤其在技术驱动的企业中,非人力资源部门在员工关系管理中的角色不容忽视。虽然人力资源部门是员工关系的主要负责人,但其他部门的经理和主管同样需要...

    hibernate多对一单向关联关系实现源码

    这种关系通常出现在一个实体类拥有多条与另一个实体类相关的记录,而另一个实体类可能只有一条对应的记录。例如,一个员工可以属于多个部门,但一个部门只有一个经理。本压缩包中的"hibernateM2O_Dan"文件包含了实现...

    员工关系管理的基本概念和体系.pptx

    员工关系管理是现代企业管理的重要组成部分,它涉及到组织与员工之间的相互作用、沟通、合作以及冲突解决等多方面。员工关系管理理论在中国的应用逐渐受到重视,特别是在知识经济时代,企业需要通过有效的员工关系...

    Hibernate之关联关系映射(一对多和多对一映射,多对多映射).docx

    `表示一个部门可以拥有多个员工,这是一个一对多关系。而在`Employee`类中,`private Dept dept;`表示一个员工隶属于一个部门,这是多对一关系。在映射配置文件中,需要使用`@OneToMany`和`@ManyToOne`注解来指定...

    大连理工数据库关系代数练习

    这里,第一个`SELECT`语句返回10号部门员工的姓名,第二个`SELECT`语句返回20号部门员工的姓名。`UNION`操作会将这两个结果集合并为一个结果集,并自动去除重复的行。 #### 4. 查询10号部门及20号部门的员工(两种...

    员工关系管理介绍员工关系职能.pptx

    员工关系管理是现代企业管理中的重要组成部分,主要关注的是在企业内部建立和维护良好的员工与组织之间的关系,以提升员工满意度、提高工作效率并促进企业发展。它涉及到企业文化的建设、人才吸引与稳定、策略制定、...

    js部门员工树形选择控件

    在这个场景下,"js部门员工树形选择控件"是一个利用JavaScript技术实现的,专门用于显示公司部门及员工的层次结构的交互组件。它能够帮助用户在多级的部门和员工列表中进行选择,提高工作效率。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics