一 : 一对一
1 一对一主键关联
Customer.java
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
/**
* 一对一主键关联
* **/
@Entity
public class Customer {
@Id
private int id;
private String name;
@OneToOne
@PrimaryKeyJoinColumn
private CustomerNo customerNo;
}
CustomerNo.java
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
/**
* 一对一主键关联
* **/
@Entity
public class CustomerNo {
@Id
private int id;
private String sn;
@OneToOne(mappedBy = "customerNo")
private Customer customer;
}
最后表结构
2 一对一外键关联
Customer1.java
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
/**
* 一对一外键关联
* **/
@Entity
public class Customer1 {
@Id
private int id;
private String name;
@OneToOne
@JoinColumn(name="customerNoId",unique=true)
private CustomerNo1 customerNo1;
}
CustomerNo1.java
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
/**
* 一对一外键关联
* **/
@Entity
public class CustomerNo1 {
@Id
private int id;
private String sn;
@OneToOne(mappedBy = "customerNo1")
private Customer1 customer1;
}
最后表结构
二 一对多
1 一对多单向关联
Classes.java
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
/**
* 一对多单向关联
* */
@Entity
public class Classes {
@Id
private int id;
private String name;
@OneToMany
private Set<Student> students;
}
Student.java
package learning.oneToMany
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
* 一对多单向关联
* */
@Entity
public class Student {
@Id
@GeneratedValue
private int id;
private String name;
}
最后表结构
2 一对多双向关联
Classes1.java
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
/**
* 一对多双向关联
* */
@Entity
public class Classes1 {
@Id
private int id;
private String name;
@OneToMany(mappedBy="classes1")
private Set<Student1> students1;
}
Student1.java
package learning.oneToMany
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
/**
* 一对多双向关联
* */
@Entity
public class Student1 {
@Id
@GeneratedValue
private int id;
private String name;
@ManyToOne
private Classes1 classes1;
}
最后表结构
三 多对多
Role.java
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
/**
* 多对多关联映射
* */
@Entity
public class Role {
@Id
private int id;
private String name;
@ManyToMany
@JoinTable(name="T_Role_Staff") //中间表
private Set<Staff> staffs;
}
Staff.java
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
/**
* 多对多关联映射
* */
@Entity
public class Staff {
@Id
private int id;
private String name;
@ManyToMany(mappedBy="staffs")
private Set<Role> roles;
}
最后表结构