Iterar sobre atributos de um objeto

Gostaria de saber se há alguma forma de iterar sobre os atributos de um objeto?
Na verdade o que eu gostaria de fazer é o seguinte: tenho uma tela de busca de alunos cadastrados. O usuário pode digitar o nome, o apelido, o turma, todos ao mesmo tempo ou também não preencher nenhum campo para pesquisa. Para cada campo da pesquisa deixado em branco, ele fará então uma busca em todos registros. Caso não digite nenhum campo para pesquisa, isto retornará todos os registros.
O que quero fazer é passar este objeto Aluno para algum método e ele itere sobre os seus atributos para saber se estão preenchidos ou em branco e fazer a devida consulta.

Ex:
O usuário deseja pesquisar apenas pelo nome do aluno: João. A pesquisa retorna todos os alunos de todas as turmas chamado João. Caso ele digitasse além do nome a turma, a consulta seria mais específica, retornando os resultados de aluno João da turma especificada, porém com qualquer apelido. Caso o usuário não digite nada, todos os registros serão retornados. Quero que este código identifique a quantidade de atributos que o objeto tem, sem a necessidade de eu informar isto manualmente.

Gostaria de saber como fazer isso utilizando Struts 2 com Hibernate(usando HQL)?

Tem que ser HQL???

na api de criteria vc tem o Example, que resolve o teu problema

pesquise a respeito de query by example