Primeira participação no forum… Me desculpem se essa dúvida já foi discutida em outra ocasião, mas procurei pelo forum e não encontrei nada…
A questão é a seguinte…
Possuo uma entidade com autorelacionamento, e quando eu insiro um novo nó que não na raiz, o Hibernate não está trazendo este novo nó.
Vamos ao código…
Primeiro eu crio o objeto que pretendo inserir:
public void actionCriarContaN2() {
centroCusto = new CentroCusto();
centroCusto.setNivelAntCencus(centroCustoAuxN1);
centroCusto.setEmpresaCencus(getEmpresa());
}
Neste caso, centroCustoAuxN1 é o pai…
Então, faço a inclusao do registro:
public String actionInserirElemento() {
try {
ctlCentroCusto.inserirElemento(centroCusto);
} catch (Exception e) {
.
.
.
}
O métdo inserirElemento() chama o método persist() da minha entityManager…
Até aí tudo bem. O registro é inserido e eu consigo vê-lo no banco.
O problema é que quando eu busco novamente os registros a partir da raiz, este novo nó não é retornado, a não ser que eu encerre a sessão e inicie outra. Me parece que o Hibernate utiliza um cache que verifica se estou executando uma busca que já foi feita na mesma sessão e me retorna o cache, não busca novamente no banco.
Como posso resolver isso? Ou então, será que não tô fazendo alguma besteira? Será? Será?