一对多关联关系
和多对一关联关系很相似
Employee 实体类 – 多方不维护
package com.ssj.domain;
import java.util.Date;
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.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name="employee")
public class Employee {
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Id
@Column(name="ID")
private Integer Id;
@Column(name="EMP_NAME")
private String empName;
@Column(name="EMP_BIRTH")
@Temporal(TemporalType.DATE)
private Date empBirth;
public Integer getId() {
return Id;
}
public void setId(Integer id) {
Id = id;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Date getEmpBirth() {
return empBirth;
}
public void setEmpBirth(Date empBirth) {
this.empBirth = empBirth;
}
@Override
public String toString() {
return "Employee [Id=" + Id + ", empName=" + empName + ", empBirth="
+ empBirth + "]";
}
}
Department 实体类 – 一方维护
package com.ssj.domain;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="department")
public class Department {
@Id
@Column(name="ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="DEPT_NAME")
private String deptName;
@OneToMany
@JoinColumn(name="DEPT_ID")
private List<Employee> 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 List<Employee> getEmployee() {
return employee;
}
public void setEmployee(List<Employee> employee) {
this.employee = employee;
}
@Override
public String toString() {
return "Department [id=" + id + ", deptName=" + deptName
+ ", employee=" + employee + "]";
}
}
一个Department 可以有多个Employee ,在Department 中有一个属性 List employee; ,这就是一对多关联关系。和多对一有些许不同。
一对多使用@OneToMany注解,外键关系还是使用@JoinColumn(name=”DEPT_ID”)。
注意:这里的@JoinColumn(name=”DEPT_ID”),虽然是写在Department 实体类中,然而”USER_ID”这个字段却是加在employee 表中。
其他基本和多对一一样,只不过一对多时只能通过一方关联查询多方而不能通过多方查询一方了。