package example;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.List;
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 query.
*/
public class QueryServlet extends HttpServlet {
@PersistenceContext(name="example")
private EntityManager _entityManager;
public void init()
{
House house = null;
try {
house = _entityManager.find(House.class, new Long(1));
} catch (Throwable e) {
}
if (house == null) {
_entityManager.getTransaction().begin();
try {
House gryffindor = new House("Gryffindor");
_entityManager.persist(gryffindor);
House slytherin = new House("Slytherin");
_entityManager.persist(slytherin);
House ravenclaw = new House("Ravenclaw");
_entityManager.persist(ravenclaw);
House hufflepuff = new House("Hufflepuff");
_entityManager.persist(hufflepuff);
Student student;
student = new Student("Harry Potter", "M", gryffindor);
_entityManager.persist(student);
student = new Student("Ron Weasley", "M", gryffindor);
_entityManager.persist(student);
student = new Student("Hermione Granger", "F", gryffindor);
_entityManager.persist(student);
student = new Student("Draco Malfoy", "M", slytherin);
_entityManager.persist(student);
student = new Student("Millicent Bulstrode", "F", slytherin);
_entityManager.persist(student);
student = new Student("Penelope Clearwater", "F", ravenclaw);
_entityManager.persist(student);
} finally {
_entityManager.getTransaction().commit();
}
}
}
public void service(HttpServletRequest req, HttpServletResponse res)
throws java.io.IOException, ServletException
{
PrintWriter out = res.getWriter();
res.setContentType("text/html");
Query allHouse = _entityManager.createQuery("SELECT o FROM House o");
String sql = ("SELECT s" +
" FROM House h, IN(h.studentList) s" +
" WHERE h.id=?1 AND s.gender='M'");
Query boysInHouse = _entityManager.createQuery(sql);
List houses = allHouse.getResultList();
for (int i = 0; i < houses.size(); i++) {
House house = (House) houses.get(i);
out.println("<H3>Boys living in " + house.getName() + ":</H3>");
boysInHouse.setParameter(1, new Long(house.getId()));
List boys = boysInHouse.getResultList();
if (boys.size() == 0)
out.println("No boys are living in " + house.getName());
for (int j = 0; j < boys.size(); j++) {
Student boy = (Student) boys.get(j);
out.println(boy.getName() + "<br>");
}
}
}
}