Problema com Criteria

3 respostas
barbafh3

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

3 Respostas

victor.godinho

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

rvcabral

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

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

barbafh3

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%

Criado 5 de fevereiro de 2009
Ultima resposta 6 de fev. de 2009
Respostas 3
Participantes 3