Hibernate Consulta avançada com Criteria

Pessoal ando pesquisando bastante sobre o uso que criteria ainda existem algumas coisas que para mim são limitadas com relação
a uso e como tenho que resolver isso logo vim recorrer a você. Criei uma Entidade chava aluno, entidade prova e entidade resposta.

Onde um aluno possuí várias respostas e uma resposta pode ser de vários alunos. Entretanto preciso fazer um filtro para que me retorne
todas as respostas de um aluno para uma determinada prova e ai vêm o problema na tabela resposta eu não tenho o idAluno apenas o
idProva e sendo assim a única coisa que consigo é trazer todas as respostas daquela prova mas não todas as resposta daquela prova
para aquele aluno porque o relacionamento entre aluno e resposta é de muitos para muitos e dessa forma o que eu tenho é uma terceira
tabela . Alguém saberia dizer como resover esse tipo de consulta ou que tipo de métodos da API critéria podem ser utilizados tentei resolver
o problema usando o método que tenho abaixo onde eu tento listar os objetos dessa consulta e deletar apenas esses registros listados
agradeço ajuda ou até mesmo as dicas que possam me ajudar a pesquisar e resolver o problema.

[code]
@SuppressWarnings(“unchecked”)
public void deleteResposta(Aluno aluno, Prova prova) {

	ArrayList<Resposta> respostaList = new ArrayList<Resposta>();

	
	//CreateSessionFactory é apenas uma classe que controla meu objeto session para seguir o padrão sigleton ele apenas retorna uma session.
	session = CreateSessionFactory.openSession();

	Criteria c = session.createCriteria(Aluno.class);

	c.createCriteria("cpfMatricula", aluno.getCpfMatricula());

	Disjunction ou = Restrictions.disjunction();

	ou.add(Restrictions.eq("prova", prova));

	c.add(ou);

	respostaList = (ArrayList<Resposta>) c.list();

	for (Resposta resposta : respostaList) {

		session.delete(resposta);

	}

	tx.commit();
	session.close();

}[/code]

posta sua entidade ai para gente poder te ajudar.

Mas vc pode ir olhando ja, como seu relacionamento é N:N, existe duas opções pra ser feito, qdo sua tabela gerada so tem os id das chaves estrageiras, nesse caso vc vai usar @ManyToMany e qdo vc tem mais atributos na tabela gerada alem dos ids das chaves estrageiras, vc vai ter relacionamentos @OneToMany e @ManyToOne, no primeiro caso vc vai fazer um join direto com a entidade prova e no segundo, vc vai fazer um join com a entidade resposta, depois com a entedide prova. vc tem q se preucupar tbm com de FetchMode q vc vai usar.

da uma olhada no link http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html

Dica, pelo visto vc não tem muito experiencia com Hibernate, eu te aconselharia usar HQL, pq é bem mais proximo do SQL e seria mais intuitivo de vc aprender.

espero ter te ajudado.

t+