Java Tutorial/JPA/Many to One Mapping
Содержание
- 1 Many To One Cascade Merge
- 2 Many To One Cascade Remove
- 3 Many To One Cascasde Persist
- 4 Many To One Insertable Nullable Updatable
- 5 Many To One Mapping Manually Linking
- 6 Many To One Mapping Unique Join Column
- 7 Many to One Map With Entity Hierarchy
- 8 Many To One Set Join Column Name
- 9 Mapping Relationship State
Many To One Cascade Merge
File: Department.java
<source lang="java">
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Department {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String deptName) { this.name = deptName; } public String toString() { return "Department id: " + getId() + ", name: " + getName(); }
}</source>
Many To One Cascade Remove
File: Student.java
<source lang="java">
import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Student {
@Id private int id; private String name; @ManyToOne(cascade=CascadeType.REMOVE) Address address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public String toString() { return "Student id: " + getId() + " name: " + getName() + " with " + getAddress(); }
}</source>
Many To One Cascasde Persist
File: Student.java
<source lang="java">
import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Student {
@Id private int id; private String name; @ManyToOne(cascade=CascadeType.PERSIST) Address address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public String toString() { return "Student id: " + getId() + " name: " + getName() + " with " + getAddress(); }
}</source>
Many To One Insertable Nullable Updatable
File: Department.java
<source lang="java">
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Department {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String deptName) { this.name = deptName; } public String toString() { return "Department id: " + getId() + ", name: " + getName(); }
}</source>
Many To One Mapping Manually Linking
File: Student.java
<source lang="java">
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Student {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; private String name; @ManyToOne private Department department; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }
public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public String toString() { return "\n\nID:" + id + "\nName:" + name + "\n\n"; }
}</source>
Many To One Mapping Unique Join Column
File: Student.java
<source lang="java">
import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @Entity public class Student {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; private String name; @ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="DEPT_ID", unique= true, nullable=true, insertable=true, updatable=true) private Department department; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }
public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public String toString() { return "\n\nID:" + id + "\nName:" + name + "\n\n" + department; }
}</source>
Many to One Map With Entity Hierarchy
File: Employee.java
<source lang="java">
import java.util.Date; import javax.persistence.AssociationOverride; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.MappedSuperclass; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public abstract class Employee {
@Id private int id; private String name; @Temporal(TemporalType.DATE) private Date startDate; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } public String toString() { return "Employee id: " + getId() + " name: " + getName(); }
} @MappedSuperclass abstract class CompanyEmployee extends Employee {
private int vacation; @ManyToOne private Employee manager; public int getVacation() { return vacation; } public void setVacation(int vacation) { this.vacation = vacation; } public Employee getManager() { return manager; } public void setManager(Employee manager) { this.manager = manager; }
} @Entity @AssociationOverride(name = "manager", joinColumns = @JoinColumn(name = "MGR")) class PartTimeEmployee extends CompanyEmployee {
private float hourlyRate; public float getHourlyRate() { return hourlyRate; } public void setHourlyRate(float hourlyRate) { this.hourlyRate = hourlyRate; } public String toString() { return "PartTimeEmployee id: " + getId() + " name: " + getName(); }
} @Entity class FullTimeEmployee extends CompanyEmployee {
private long salary;
private long pensionContribution; public long getPensionContribution() { return pensionContribution; } public void setPensionContribution(long pension) { this.pensionContribution = pension; } public long getSalary() { return salary; } public void setSalary(long salary) { this.salary = salary; } public String toString() { return "FullTimeEmployee id: " + getId() + " name: " + getName(); }
}</source>
Many To One Set Join Column Name
File: Student.java
<source lang="java">
import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @Entity public class Student {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; private String name; @ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="DEPT_ID") private Department department; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }
public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public String toString() { return "\n\nID:" + id + "\nName:" + name + "\n\n" + department; }
}</source>
Mapping Relationship State
File: Project.java
<source lang="java">
import java.util.ArrayList; import java.util.Collection; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.OneToMany; @Entity public class Project {
@Id private int id; private String name; @OneToMany(mappedBy="project") private Collection<ProjectAssignment> assignments; public Project() { assignments = new ArrayList<ProjectAssignment>(); } public int getId() { return id; } public void setId(int projectNo) { this.id = projectNo; } public String getName() { return name; } public void setName(String projectName) { this.name = projectName; } public Collection<ProjectAssignment> getAssignments() { return assignments; } public String toString() { return " no: " + getId() + ", name: " + getName(); }
}</source>