![]() | ||||||||||||||||||||
| documentation examples changes amber (jpa) ejb database ioc jmx jsf messaging quercus remoting servlet security field property query many-to-one one-to-many many-to-many inherit sessions | query cmp
The Amber Query API resembles the JDBC PreparedStatement with enhanced SQL and direct support for objects.
House.java @Entity public class House { @Id@Column(name="id") public long getId() @Basic public String getName() @OneToMany(targetEntity=Student.class, mappedBy="house") public Collection getStudentList() } Student.java @Entity public class Student { @Id@Column(name="id") public long getId() @Basic public String getName() @ManyToOne@JoinColumn(name="house") public House getHouse() } QueryServlet.java
private void doService(PrintWriter out)
throws java.io.IOException
{
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>");
}
}
}
}
| |||||||||||||||||||