import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
@Entity
@EntityListeners(MyMonitor.class)
public class Employee {
@Id
private int employeeId;
private String employeeName;
@ElementCollection
private Set<String> nickName;
@OneToMany(mappedBy="employee", cascade=CascadeType.ALL)
private List<Phone> phones;
public int getEmployeeId() {
return employeeId;
}
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
}
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
joinColumns={@JoinColumn(name="employeeId")},
inverseJoinColumns={@JoinColumn(name="projectId")}
)
private List<Project> projects;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="AddressId")
private Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Set<String> getNickName() {
return nickName;
}
public void setNickName(Set<String> nickName) {
this.nickName = nickName;
}
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
public List<Project> getProjects() {
return projects;
}
public void setProjects(List<Project> projects) {
this.projects = projects;
}
public List getPhones() {
return phones;
}
public void setPhones(List phones) {
this.phones = phones;
}
}
package com.demo.beans;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToMany;
@Entity(name="project")
public class Project {
@Id
private int projectId;
private String projectName;
@ManyToMany(mappedBy="projects",cascade=CascadeType.ALL)
private List<Employee> employees;
public int getProjectId() {
return projectId;
}
public void setProjectId(int projectId) {
this.projectId = projectId;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public List<Employee> getEmployees() {
return employees;
}
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
}
测试
Project project = new Project();
project.setProjectId(1);
project.setProjectName("Project");
List<Project> projects = new ArrayList<Project>();
// add the project into the list
projects.add(project);
// projects.add(globalProject);
// projects.add(localProject);
Employee employee = new Employee();
employee.setEmployeeName("Test Bai");
// Set the project into employee
employee.setProjects(projects);
userRepository.addEmployee(employee);
保存后的数据库中的表记录如下:
mysql> select * from employee;
+------------+--------------+-----------+
| employeeId | employeeName | AddressId |
+------------+--------------+-----------+
| 0 | Test Bai | NULL |
+------------+--------------+-----------+
mysql> select * from project;
+-----------+-------------+
| projectId | projectName |
+-----------+-------------+
| 1 | Project |
+-----------+-------------+
1 row in set (0.00 sec)
mysql> select * from employee_project;
+------------+-----------+
| employeeId | projectId |
+------------+-----------+
| 0 | 1 |
+------------+-----------+
1 row in set (0.00 sec)