Recuperando um objeto pela metade

1 resposta
vinny767

Amigos,
Estou com o seguinte problema.

Tenho na minha aplicação um cadastro de usuarios.
Um usuario possui uma lista de irmaos, que também é uma lista de usuarios. Algo do tipo:

Usuario user = new Usuario();
    usuario.getListaIrmaos();

O que está acontecendo é o seguinte… Em tempo de execução eu insiro novos irmaos na lista de irmaos do meu usuario. Está funcionando direito, pois aparece o registro novo no banco de dados. Porem, quando acesso as propriedades do usuario principal novamente, o novo irmao nao aparece na lista de irmaos.
Eu preciso parar a aplicação, entrar nela novamente para que o registro apareça.

Parece que o hibernate está guardando o usuario em cache em vez de busca-lo do banco novamente. Será que é isso mesmo? Como faço pra resolver?

Função que monta os dados do usuario:

public String prepararAlterar(){
		Long id = Long.parseLong(this.idUsuario);
		usuario = Progenes.obtemUsuario(id);
		
		if(usuario.getSexo().equals("M")){
			this.opcaoSexo = "Masculino";
		}else{
			if(usuario.getSexo().equals("F"))
			this.opcaoSexo = "Feminino";
		}
		
		if(usuario.isStVivo() == true){
			 opcaoVivoOuMorto = "Sim";
		}else{
			opcaoVivoOuMorto = "Não";
		}
		
		listaDeIrmaos                = usuario.getListaDeIrmaos();
		listaDeFilhos                = usuario.getListaDeFilhos();
		listaDeConjuges              = usuario.getListaDeConjuge();
		
		int indice = 0;
		for (Enfermidade temp : listaDeEnfermidades) {
			for (Enfermidade temp1 : usuario.getListaDeEnfermidades()) {
				if(temp.equals(temp1)){
					if(indice == 0) this.enf0 = true;
					if(indice == 1) this.enf1 = true;
					if(indice == 2) this.enf2 = true;
					if(indice == 3) this.enf3 = true;
				}
			}
			indice++;
		}
		
		
		return OK;
	}

Obrigado!

1 Resposta

jvlouvem

Olá vinny767, na classe onde voce utiliza diretamente o hibernate, após a inserção voce tá dando um flush ?
As vezes só com o flush que o objeto fica realmente atualizado

Criado 5 de março de 2009
Ultima resposta 5 de mar. de 2009
Respostas 1
Participantes 2