雇员(Employee)表
部门表(Department)表
雇员对部门为1对多的关系。
要求,删除雇员不影响部门,删除部门则同步删除且部门下的所有雇员
import java.util.Date; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * 员工实体类 * @author Administrator * */ @Entity @Table(name="employee") public class Employee{ @Id @Column(name="emp_id") @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer empId; //员工id @Column(name="emp_name",nullable = false) private String empName; //员工名称 @Column(name="emp_officePhone",nullable = false) private String officePhone; //联系电话 @Column(name="emp_mobilePhone",nullable = false) private String mobilePhone; //办公电话 @Temporal(TemporalType.DATE) @Column(name = "emp_entryDate",nullable = false) private Date entryDate; //入职日期 @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "addr_id") private Address homeAddress; //员工地址 @ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER, optional = false) @JoinColumn(name="dept_id") private Department department; //员工所在部门 public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public String getOfficePhone() { return officePhone; } public void setOfficePhone(String officePhone) { this.officePhone = officePhone; } public String getMobilePhone() { return mobilePhone; } public void setMobilePhone(String mobilePhone) { this.mobilePhone = mobilePhone; } public Date getEntryDate() { return entryDate; } public void setEntryDate(Date entryDate) { this.entryDate = entryDate; } public Address getHomeAddress() { return homeAddress; } public void setHomeAddress(Address homeAddress) { this.homeAddress = homeAddress; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } }
import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import org.codehaus.jackson.annotate.JsonIgnore; /** * 部门实体类 * @author Administrator * */ @Entity @Table(name="depart") public class Department{ @Id @Column(name="dept_id") @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; @Column(name="dept_name",nullable = false) private String deptName; //部门名称 @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "loca_id") private Location deptLocation; //部门所在的地址 @JsonIgnore @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "department") private Set<Employee> employees = new HashSet<Employee>(); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public Location getDeptLocation() { return deptLocation; } public void setDeptLocation(Location deptLocation) { this.deptLocation = deptLocation; } public Set<Employee> getEmployees() { return employees; } public void setEmployees(Set<Employee> employees) { this.employees = employees; } public void addEmployee(Employee employee){ employee.setDepartment(this); this.employees.add(employee); } public void deleteEmployee(Employee employee){ this.employees.remove(employee); employee.setDepartment(null); } public void clearEmployeeSet(){ employees.clear(); } }
@Repository("employeeDAO") public class EmployeeDAO extends BaseDao<Employee>{ @Override public void delete(Employee obj) { Employee ori = findByObject(obj); if(null!=ori){ ori.getDepartment().deleteEmployee(ori); getEntityManager().remove(ori); return; }else{ throw new DaoException("要删除的对象不存在.."); } } }
相关推荐
JPA中的一对多双向关联与级联操作
10_JPA详解_JPA中的一对多双向关联与级联操作.zip
Hibernate 一对多、多对一、级联、加载、反转
NULL 博文链接:https://1028826685.iteye.com/blog/1525772
struts2 spring jpa操作数据库 级联数据 hibernate
NULL 博文链接:https://xuwoool.iteye.com/blog/1306207
主要介绍了MySQL使用外键实现级联删除与更新的方法,详细分析了mysql数据库与表的创建、数据插入、查询以及外链的使用与级联操作相关技巧,需要的朋友可以参考下
Hibernate 是最流行的ORM 框架之一,也是最早实现JPA 的规范框架之一。它被JBoss 收购后, 目前作为JBoss 的一个开源框架,它遵循LGPL v2.1 开源许可协议,官方主页是http://www.hiber ate.org/。
JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第10讲 JPA中的一对多双向关联与级联操作.avi
10_传智播客JPA详解_JPA中的一对多双向关联与级联操作.rar
JPA教程JPA教程JPA教程JPA教程JPA教程
jpa jpa规范 jpa源码 jpa jpa规范 jpa源码
jpajpajpajpajpajpajpajpajpajpajpajpajpa
包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注
JPA视频_PPT及源码 · 1. JPA视频_概述 · 2. JPA视频_HelloWorld · 3. JPA视频_基本注解 · 4. JPA视频_Transient注解 · 5. JPA视频_Temporal注解 · 6. JPA视频_Table主键生成策略 · 7. JPA视频_...
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联...
07_JPA详解_使用JPA加载_更新_删除对象.zip 07_JPA详解_使用JPA加载_更新_删除对象.zip
JPA中双向一对多实体Bean的属性配置,包括延迟加载,级联删除等