实体关系之@ManyToMany

  1. package com.entity;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.HashSet;  
  5. import java.util.Set;  
  6.   
  7. import javax.persistence.Column;  
  8. import javax.persistence.Entity;  
  9. import javax.persistence.GeneratedValue;  
  10. import javax.persistence.Id;  
  11. import javax.persistence.ManyToMany;  
  12. import javax.persistence.Table;  
  13.   
  14. @Entity  
  15. @Table(name = "Student")  
  16. public class Student implements Serializable {  
  17.       
  18.     private Integer studentid;//学生ID  
  19.     private String studentName;//学生姓名  
  20.     private Set<Teacher> teachers = new HashSet<Teacher>();//对应的教师集合  
  21.   
  22.     public Student() {  
  23.     }  
  24.   
  25.     public Student(String studentName) {  
  26.         this.studentName = studentName;  
  27.     }  
  28.   
  29.     @Id  
  30.     @GeneratedValue  
  31.     public Integer getStudentid() {  
  32.         return studentid;  
  33.     }  
  34.   
  35.     public void setStudentid(Integer studentid) {  
  36.         this.studentid = studentid;  
  37.     }  
  38.   
  39.     @Column(nullable = false, length = 32)  
  40.     public String getStudentName() {  
  41.         return studentName;  
  42.     }  
  43.   
  44.     public void setStudentName(String studentName) {  
  45.         this.studentName = studentName;  
  46.     }  
  47.       
  48.     /* 
  49.      * @ManyToMany 注释表示Student是多对多关系的一边,mappedBy 属性定义了Student 为双向关系的维护端 
  50.      */  
  51.     @ManyToMany(mappedBy = "students")  
  52.     public Set<Teacher> getTeachers() {  
  53.         return teachers;  
  54.     }  
  55.   
  56.     public void setTeachers(Set<Teacher> teachers) {  
  57.         this.teachers = teachers;  
  58.     }  
  59. }  


Teacher.java 
Java代码   收藏代码
  1. package com.entity;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.HashSet;  
  5. import java.util.Set;  
  6.   
  7. import javax.persistence.CascadeType;  
  8. import javax.persistence.Column;  
  9. import javax.persistence.Entity;  
  10. import javax.persistence.FetchType;  
  11. import javax.persistence.GeneratedValue;  
  12. import javax.persistence.Id;  
  13. import javax.persistence.JoinTable;  
  14. import javax.persistence.ManyToMany;  
  15. import javax.persistence.Table;  
  16. import javax.persistence.JoinColumn;  
  17.   
  18. @Entity  
  19. @Table  
  20. public class Teacher implements Serializable {  
  21.   
  22.     private Integer teacherid;// 教师ID  
  23.     private String teacherName;// 教师姓名  
  24.     private Set<Student> students = new HashSet<Student>();// 对应的学生集合  
  25.   
  26.     public Teacher() {  
  27.   
  28.     }  
  29.   
  30.     public Teacher(String teacherName) {  
  31.         this.teacherName = teacherName;  
  32.     }  
  33.   
  34.     @Id  
  35.     @GeneratedValue  
  36.     public Integer getTeacherid() {  
  37.         return teacherid;  
  38.     }  
  39.   
  40.     public void setTeacherid(Integer teacherid) {  
  41.         this.teacherid = teacherid;  
  42.     }  
  43.   
  44.     @Column(nullable = false, length = 32)  
  45.     public String getTeacherName() {  
  46.         return teacherName;  
  47.     }  
  48.   
  49.     public void setTeacherName(String teacherName) {  
  50.         this.teacherName = teacherName;  
  51.     }  
  52.     /* 
  53.      * @ManyToMany 注释表示Teacher 是多对多关系的一端。 
  54.      * @JoinTable 描述了多对多关系的数据表关系,name属性指定中间表名称。 
  55.      * joinColumns 定义中间表与Teacher 表的外键关系,中间表Teacher_Student的Teacher_ID 列是Teacher 表的主键列对应的外键列。 
  56.      * inverseJoinColumns 属性定义了中间表与另外一端(Student)的外键关系。 
  57.      */  
  58.     @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)  
  59.     @JoinTable(name = "Teacher_Student",   
  60.             joinColumns ={@JoinColumn(name = "teacher_ID", referencedColumnName = "teacherid") },   
  61.             inverseJoinColumns = { @JoinColumn(name = "student_ID", referencedColumnName = "studentid")   
  62.     })  
  63.     public Set<Student> getStudents() {  
  64.         return students;  
  65.     }  
  66.   
  67.     public void setStudents(Set<Student> students) {  
  68.         this.students = students;  
  69.     }  
  70.       
  71.     public void addStudent(Student student) {  
  72.         if (!this.students.contains(student)) {//检测在该散列表中某些键是否映射到指定值,value 查找的值。如果某些键映射到该散列表中的值为true,否则false  
  73.             this.students.add(student);  
  74.         }  
  75.     }  
  76.   
  77.     public void removeStudent(Student student) {  
  78.         this.students.remove(student);  
  79.     }  
  80.   
  81. }  
转自:http://lym6520.iteye.com/blog/314065
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值