Pessoal,
Encontrei um problema com o hibernate e gostaria de saber se alguem ja passou por isso e já resolveu o problema de forma melhor do que eu resolvi.
É o seguitne.
Tenho obj Cliente, por exemplo, com os campos id e nome.
Pra inserir eu dou um “new Cliente(“Fulano”)”. E mando salvar com “hibernateDAO.saveOrUpdate(objCliente)”. Até aí Ok. O Hibernate pega um id, seta para o meu obj e manda um comando insert.
O problema é que quando retornar erro no insert (saveOrUpdate) eu quero tratar o erro e enviar novamente. Por exemplo, se “nome” fosse unique key, e e “Fulano” já existisse o meu savaOrUpdate iria retornar um erro. Até beleza, tudo funciona. Mas aí eu pego o objCliente e faço objCliente.setNome(“Fulano 2”). e mando novamente saveOrUpdate. Ao invés do hibernate mandar um comando insert, ele manda um update. Porque na primeira tentativa o hibernate já pegou o id e setou para o meu obj, e na segunda tentativa ele entendeu que deveria fazer o update, o q está errado.
A minha solução foi essa:
Object objAux = objCliente.getId;
if (! hibernateDao.saveOrUpdate(objCliente))
objCliente.setId(objAux);
Eu gostaria de saber se existe algo no hibernate que faça esse tratamento automatico, horrivel ter q fazer isso toda vez q eu for dar um saveOrUpdate, mesmo que ele seja uma função genérica…
Agradeço,
Fábio