Ajuda com Hibernate

2 respostas
V

Amigos, boa tarde,

Sou novo no desenvolvimento em Java, a pouco tempo terminei a academia do Java e estou fazendo a academia do web na gc, e minha dúvida pode ate ser simples mas não estou sabendo por onde começar:

O meu problema é o seguinte, possuo um método:

public double getChsGradeDetalhada() { Iterator it = getDetalhamentosGrade().iterator(); //Meu problema esta aqui double total = 0; while (it.hasNext()) { DetalhamentoGrade dg = (DetalhamentoGrade) it.next(); total += (double)dg.getValorDiferencaHorario()*((double)dg.getNumSemanas()/(int)getDetalhamentoData().getNumSemanas()); } return Util.arredondarNumero(total, 2); }

A aplicação que estou dando manutenção esta usado hibernate e quando submeto um formulário de cadastro, ele chama este método (Que tras um saldo de horas) e depois de realizar o cadastro, o sistema chama este método novamente para exibir o novo saldo.

O problema é o seguinte, no primeiro momento que acesso este método ocorrem 4 interações dentro do loop, mas depois de inserir o novo registro quando eu chamo o método novamente ocorrem ocorrem 5 interações, como já é de se esperar, porem ele apresenta o erro:

Não sei se ajuda mas abaixo segue o trecho da classe que esta chamando o método pela segunda vez:

sessaoHib.flush();

        DocenteAdm da = new DocenteAdm(sessaoHib);
        sessaoHib.refresh(docente);

        DocenteResumido dr = da.getDocenteResumidoDeDocente(docente);  //br.senac.sp.sisdocen.servlet.DetalhamentoGradeAcaoServlet.processRequest(DetalhamentoGradeAcaoServlet.java:201)
        sessaoHib.merge(dr);
        tx.commit();

Não o que esta errado, alguem pode me dar uma dica?

Desde já agradeço
Victor

2 Respostas

B

Olhando seu comentário no primeiro trecho de código vejo que você precisa colar o código do método getDetalhamentosGrade aqui…
Este método está retornando null e para te ajudar vamos precisar saber o porque.

V

Bruno, desde já lhe agradeço pela ajuda.

O metodo getDetalhamentosGrade esta dentro da classe:

public abstract class AbstractDocente implements Serializable, Comparable
{
.
.
.

    public Set getDetalhamentosGrade()
    {
      return detalhamentosGrade;
    }
.
.
.
}

Pelo pouco que entendo ela é uma classe de mapeamento do hibernate.

Olhando o XML de mapeamento desta classe encontro o seguinte fragmento:

<set name="detalhamentosGrade" where="ativo=1">
      <key>
        <column name="ANO" />
        <column name="MES" />
        <column name="DOCENTE_CHAPA" />
      </key>
      <one-to-many class="DetalhamentoGrade" />
    </set>

Não sei se estou falando besteira, mas assim na primeira vez que chamo este método possuo 4 registros no banco de dados, que refletem as 4 interações do método, no segundo momento que chamo a função eu já fiz o insert do 5º registro, porem ele ainda não foi commitado, mesmo sem ter sido comitado o metodo realiza agora 5 interações apresentando o erro de null.

:frowning:

Criado 19 de agosto de 2009
Ultima resposta 19 de ago. de 2009
Respostas 2
Participantes 2