Spring Data JPA注解
一,基本注解
[email protected]
[email protected]&@IdClass
[email protected]
[email protected]
[email protected]
二,关联关系注解
1.一对多
2.多对多
关系只由一方维护,学生为维护方,学生决定选课内容
创建新表保存两表的id值
全部代码如下:
Teacher代码
import java.util.List;
import javax.persistence.Basic;
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.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "teacher")
public class Teacher {
@Id()
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "teacherName", nullable = false, length = 64)
private String teacherName;
@Basic
private String sex;
@Column(name = "tel", nullable = false, length = 18)
private String tel;
@OneToMany(mappedBy = "teacher", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
//拥有mappedBy注解的实体类为关系被维护端
//mappedBy="teacher"中的teacher是Student中的teacher属性
private List<Student> stus;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public List<Student> getStus() {
return stus;
}
public void setStus(List<Student> stus) {
this.stus = stus;
}
}
Student代码
import java.util.List;
import javax.persistence.Basic;
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.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "student")
public class Student {
@Id()
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "stuName", nullable = false, length = 64)
private String stuName;
@Basic
private String sex;
@Column(name = "email", nullable = true, length = 64)
private String email;
//可选属性optional=false,表示teacher不能为空。删除学生,不影响老师
@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},optional=false)
@JoinColumn(name="teacher_id")
private Teacher teacher;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name = "student_course",joinColumns = @JoinColumn(name = "stu_id"),
inverseJoinColumns = @JoinColumn(name = "course_id"))
private List<Course> course;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
public List<Course> getCourse() {
return course;
}
public void setCourse(List<Course> course) {
this.course = course;
}
}
Course代码:
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.ManyToMany;
import javax.persistence.Table;
@Entity
@Table(name = "course")
public class Course {
@Id()
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "courseName", nullable = false, length = 64)
private String courseName;
@Column(name = "courseDesc", nullable = false, length = 64)
private String courseDesc;
@ManyToMany(mappedBy = "course")
//拥有mappedBy注解的实体类为关系被维护端
//mappedBy="course"中的course是Student中的course属性
private List<Student> student;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public String getCourseDesc() {
return courseDesc;
}
public void setCourseDesc(String courseDesc) {
this.courseDesc = courseDesc;
}
public List<Student> getStudent() {
return student;
}
public void setStudent(List<Student> student) {
this.student = student;
}
}