EJB笔记三 many to many

多对多关系采用 中间表连接的映射策略。建立的中间表将分别引入两边的主键做为外键
@SuppressWarnings( " serial " )
@Entity
@Table(name 
=   " Student " )
public   class  Student implements Serializable {
    
private Integer studentid;
    
private String StudentName;    
    
private Set<Teacher> teachers = new HashSet<Teacher>();
  
    
public Student() {}
    
    
public Student(String studentName) {
        StudentName 
= studentName;
    }

    
    @Id
    @GeneratedValue
    
public Integer getStudentid() {
        
return studentid;
    }

    
public void setStudentid(Integer studentid) {
        
this.studentid = studentid;
    }

    
    @Column(nullable
=false, length=32)
    
public String getStudentName() {
        
return StudentName;
    }

    
public void setStudentName(String studentName) {
        StudentName 
= studentName;
    }

    
    @ManyToMany(mappedBy 
= "students"//mappedBy定义了student为双向关系的维护端
    public Set<Teacher> getTeachers() {
        
return teachers;
    }

    
public void setTeachers(Set<Teacher> teachers) {
        
this.teachers = teachers;
    }

}

 

 

@SuppressWarnings( " serial " )
@Entity
@Table(name 
=   " Teacher " )
public   class  Teacher implements Serializable {
    
private Integer teacherid;
    
private String TeacherName;    
    
private Set<Student> students = new HashSet<Student>();
  
    
public Teacher() {}
    
    
public Teacher(String teacherName) {
        TeacherName 
= teacherName;
    }

    
    @Id
    @GeneratedValue
    
public Integer getTeacherid() {
        
return teacherid;
    }

    
public void setTeacherid(Integer teacherid) {
        
this.teacherid = teacherid;
    }
 
    
    @Column(nullable
=false, length=32)
    
public String getTeacherName() {
        
return TeacherName;
    }

    
public void setTeacherName(String teacherName) {
        TeacherName 
= teacherName;
    }

    
    @ManyToMany(cascade 
= CascadeType.PERSIST, fetch = FetchType.LAZY) 
    @JoinTable(name 
= "Teacher_Student",
        joinColumns 
= {@JoinColumn(name = "Teacher_ID", referencedColumnName = "teacherid")},//被维护端的外键
        inverseJoinColumns = {@JoinColumn(name = "Student_ID", referencedColumnName = "studentid")})//维护端的外键
    public Set<Student> getStudents() {
        
return students;
    }

    
public void setStudents(Set<Student> students) {
        
this.students = students;
    }

    
    
public void addStudent(Student student) {
        
if (!this.students.contains(student)) {
             
this.students.add(student);
        }

    }


     
public void removeStudent(Student student) {
         
this.students.remove(student);
    }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值