Objetos duplicados com o hibenate

3 respostas
Y

Estou com um problema na minha aplicação. Crio dois objetos iguais, e quando altero um o outro altera também.

//aqui pego dois objetos iguais do banco
		Cliente cliente1 = new ClienteDAO().get(id, false);
		Cliente cliente2 = new ClienteDAO().get(id, false);
		
		cliente2.setNomeFantasia("joao");
		//depois que passar daqui o nome fantasia do cliente1 também fica joão

alguém sabe o que pode se isso?

3 Respostas

R

Se o método ClienteDAO.get() estiver retornando a mesma referência duas vezes (o que é possível, devido ao recursos de cache do Hibernate), então as variáveis cliente1 e cliente2 apontarão para a mesma referência. Assim, na verdade você não tem dois objetos distintos, mas sim um único objeto com dois pontos de acesso. Assim, não é que esteja acontecendo de, ao alterar um objeto, também alterar o outro - um único objeto está sendo alterado, mas há mais de uma variável apontando para esse objeto.

Y

Resolveu dando um clienteDAO.clear() antes de instanciar o cliente2. Agora não sei se é o mais indicado.

Y

Não deu muito certo, em determinados momentos ocorre o erro:

javax.servlet.ServletException: could not initialize proxy - no Session

Criado 20 de agosto de 2009
Ultima resposta 20 de ago. de 2009
Respostas 3
Participantes 2