Problema com Criteria

Pessoal, seguinte, eu tenho essa situação, pagamento, referenciando participante, referenciando função:

Pagamento.class

.
.
.
public class Pagamento {

    private int codPagamento;
    private Participante participante;
    private String nomeUsuario;
    private int qtdePrevista;
    private double valorTotalPrevisto;
    private Boolean pago;
    private int ano;
    private int version = 0;
.
.
.

Participante.class

.
.
.
public class Participante {

    private int codParticipante;
    private String nomeParticipante;
    private String cpf;
    private Curso curso;
    private Funcao funcao;
    private Projeto projeto;
    private int version = 0;
.
.
.

Funcao.class

.
.
.
public class Funcao {

    private int codFuncao;
    private String nomeFuncao;
    private Bolsa bolsa;
    private int anoInicial;
    private int anoFinal;
    private int limiteBolsas;
    private int version = 0;
.
.
.

Na inclusao de um pagamento, eu preciso do somatorio de qtdePrevista, sendo que qtdePrevista seja apenas dos pagamento relativos a função do participante, que eu ja tenho o codigo… eh meio confuso, mas eh isso mesmo, se alguem puder me ajudar hehehe

Buscar qtdePrevista:

SELECT SUM(pag.qtdePrevista) FROM Pagamento pag INNER JOIN pag.participante par INNER JOIN par.funcao fun WHERE par.codParticipante = :codigoParticipante AND fun.codFuncao = :codigoFuncao

se o seu problema é criteria dá uma olhada neste material talvez ajude

http://www.hibernate.org/hib_docs/reference/en/html/querycriteria.html

Vlw pela ajuda, minha resolução ficou assim:

Session session = getCtrPagamento().getGenDao().getSession();
session.getTransaction().begin();
Criteria c = session.createCriteria(Pagamento.class)
                 .setProjection(Projections.sum("qtdePrevista"))
                 .createCriteria("participante")
                 .add(Restrictions.eq("funcao.codFuncao", codFuncao));
List resultado = c.list();

Funcionou 100%