Student: package lesson6; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.Table; @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") public Set<Teacher> getTeachers() { return teachers; } public void setTeachers(Set<Teacher> teachers) { this.teachers = teachers; } } Teacher: package lesson6; import java.io.Serializable; import java.util.HashSet; import java.util.Set; 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.Table; @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(strategy=GenerationType.AUTO) 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); } } Dao: package lesson6; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @Stateless @Remote ({TeacherDAO.class}) public class TeacherDAOBean implements TeacherDAO { @PersistenceContext protected EntityManager em; public void insertTeacher() { Teacher t1 = new Teacher(); t1.setTeacherName("lxl"); Teacher t2 = new Teacher(); t2.setTeacherName("ym"); Student s1 = new Student(); s1.setStudentName("aaa"); Student s2 = new Student(); s2.setStudentName("ccc"); Set set2 = new HashSet(); set2.add(s1); set2.add(s2) ; t1.setStudents(set2); t2.setStudents(set2); em.persist(t1); em.persist(t2); } public Teacher getTeacherByID(Integer teacherid) { Teacher teacher= em.find(Teacher.class, teacherid); if (teacher!=null) teacher.getStudents().size(); return teacher; } public Student getStudentByID(Integer studentid) { Student student= em.find(Student.class, studentid); if (student!=null) student.getTeachers().size(); return student; } public void removeStudent(Integer studentid){ Student s = em.find(Student.class,studentid ); Set set = s.getTeachers(); Iterator it = set.iterator(); while(it.hasNext()){ Teacher t = (Teacher)it.next(); t.removeStudent(s); } s.setTeachers(null); em.remove(s); } public void removeTeacher(Integer teacherid){ Teacher t = em.find(Teacher.class,teacherid ); em.remove(t); } }