DUvida com consulta em HIBERNATE

Galera,

Estou precisando de uma ajuda, estou fazendo um um filtro para uma tabela e estou com o seguinte problema:

Eu tenho uma classe Exercicio

public class Exercicio implements Serializable {

    private long numExercicio;
    private String descricao;
    private String titulo;
    private String categoria;
    private int tempoMaximo;
    private Set<Resposta> respostas = new HashSet<Resposta>();
    private EstadoInicial estadoInicial = new EstadoInicial();
   
    public Exercicio() {
        
    }
  //sets e gets 

Uma classe Funcionario:


public class Funcionario implements Serializable {

	public static final String ADMINISTRADOR = "Administrador";
	public static final String TUTOR = "Tutor";
	public static final String OPERADOR = "Operador";
	
    private String nome;
    private long CPF;
    private int numRegistro;
    private String senha;
    private String tipo;
    private String cargo;
    private Treinamento treinamento;
    private int horasTreino;

    
    public Funcionario() {
    }
  //sets e gets 

Que são utilizadas na criação da classe associativa Treinamento:


public class Treinamento implements Serializable{

    private static final long serialVersionUID = 1L;

    public static final String NAO_EXECUTADO = "Não Executado";
    public static final String SUCESSO = "Aprovado"; 
    public static final String INSUCESSO = "Reprovado";
	
    private long id;
    private String status;
    private Date data;
    private Calendar hora;
    private Funcionario tutor;
    private Funcionario operador;
    private Resultado resultado;
    private Exercicio exercicio;
    private int tempo;

    public Treinamento() {
    }

  //sets e gets  

E também tenho os respectivos mapeamentos para estas classes com o hibernate
Um exercício quando proposto é adicionado a tabela de treinamentos com o status “Não Executado”, e permanece assim até ser realizado, porém se um Exercicio ainda não foi adicionado a um Funcionario ele também não foi realizado porém não pertence a tabela Treinamento.

Preciso fazer uma consulta de Funcionários que obtiveram status de “aprovado”, “reprovado” ou “não realizado” ( o uma combinação de mais de uma destas condições ) de um determinado Exercicio.

Como consigo fazer isso com consulta por criteria ou HQL ?
Alguem tem alguma sugestão?

Desde já agradeço.
[]`s

Alguem ?