Lo que quieres hacer es crear una consulta escrita. Con el mapeo adecuado, también puede obtener objetos relacionados, sin necesidad de consultar tablas de unión como ORM
hará esto por ti:
Query query = session.createQuery(hql);
List<TestProject> results = query.list();
for (TestProject row : results) {
//what to do here
// do whatever you want
}
Y con el mapeo de relaciones adecuado, puede obtener relaciones como esta:
for (TestProject row : results) {
Set<TestEmployee> employees=row.getEmployeesList();
// do more work.
}
En cuanto a "cómo hacerlo", el tema es demasiado amplio para cubrirlo en una sola respuesta, etc., pero debería poder comenzar desde aquí:http://hibernate.org/orm/documentation/5.1/