package example; import java.io.PrintWriter; import java.io.IOException; import java.util.List; import java.util.Collection; import java.util.Iterator; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import javax.persistence.*; /** * A client to illustrate the many-to-many relation. */ public class ManyToManyServlet extends HttpServlet { @PersistenceContext(name="example") private EntityManager _entityManager; public void init() { Student student = null; try { student = _entityManager.find(Student.class, new Long(1)); } catch (Throwable e) { } if (student == null) { _entityManager.getTransaction().begin(); try { Student harry = new Student("Harry Potter"); _entityManager.persist(harry); Student ron = new Student("Ron Weasley"); _entityManager.persist(ron); Student hermione = new Student("Hermione Granger"); _entityManager.persist(hermione); Course darkArts = new Course("Defense Against the Dark Arts"); _entityManager.persist(darkArts); Course potions = new Course("Potions"); _entityManager.persist(potions); Course divination = new Course("Divination"); _entityManager.persist(divination); Course arithmancy = new Course("Arithmancy"); _entityManager.persist(arithmancy); Course transfiguration = new Course("Transfiguration"); _entityManager.persist(transfiguration); Grade grade; _entityManager.persist(new Grade(harry, darkArts, "A")); _entityManager.persist(new Grade(harry, potions, "C-")); _entityManager.persist(new Grade(harry, transfiguration, "B+")); _entityManager.persist(new Grade(harry, divination, "B")); _entityManager.persist(new Grade(ron, darkArts, "A-")); _entityManager.persist(new Grade(ron, potions, "C+")); _entityManager.persist(new Grade(ron, transfiguration, "B")); _entityManager.persist(new Grade(ron, divination, "B+")); _entityManager.persist(new Grade(hermione, darkArts, "A+")); _entityManager.persist(new Grade(hermione, potions, "A-")); _entityManager.persist(new Grade(hermione, transfiguration, "A+")); _entityManager.persist(new Grade(hermione, arithmancy, "A+")); } finally { _entityManager.getTransaction().commit(); } } } public void service(HttpServletRequest req, HttpServletResponse res) throws java.io.IOException, ServletException { PrintWriter out = res.getWriter(); res.setContentType("text/html"); try { _entityManager.getTransaction().begin(); Query allStudent = _entityManager.createQuery("SELECT o FROM Student o"); List students = allStudent.getResultList(); for (int i = 0; i < students.size(); i++) { Student student = (Student) students.get(i); out.println("<h3>" + student.getName() + "</h3>"); Collection courses = student.getCourses(); out.println("<ul>"); Iterator iter = courses.iterator(); while (iter.hasNext()) { Course course = (Course) iter.next(); out.println("<li>" + course.getName()); } out.println("</ul>"); } } finally { _entityManager.getTransaction().commit(); } } }