O que você quer fazer é criar uma consulta digitada. Com o mapeamento adequado, você também pode obter objetos relacionados - não é necessário consultar tabelas de junção como
ORM
vai fazer isso por você:Query query = session.createQuery(hql);
List<TestProject> results = query.list();
for (TestProject row : results) {
//what to do here
// do whatever you want
}
E com o mapeamento de relação adequado, você pode obter relações como esta:
for (TestProject row : results) {
Set<TestEmployee> employees=row.getEmployeesList();
// do more work.
}
Quanto a "como fazer" - o tópico é muito amplo para cobri-lo em uma única resposta, etc., mas você deve poder começar daqui - http://hibernate.org/orm/documentation/5.1/