Hibernate级联查询多对一

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());
}
	 
}
}
 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值