Here are a few ways to write more elaborate HQL queries:
1. Add WHERE clauses to filter results:
String queryString = "from Student s where s.id = :id";
query.setParameter("id", 1111);
2. Join to related entities:
String queryString = "select s from Student s join s.courses c";
3. Use aggregation functions:
String queryString = "select max(s.id) from Student s";
4. Sort and paginate results:
query.setFirstResult(10).setMaxResults(20);
query.addOrder(Order.desc("name"));
5. Nest subqueries:
String query