Pessoal estou com o seguinte problema. Quando dou um merge o usuario não é atualizado e sim é inserido um novo usuario com quase todas as informações identicas. Exceto com as modificações que eu coloquei.
Meu método está correto?
Apenas um palpite…
O Atributo que é a chave primaria da tabela está igual no objeto Usuario que você passou para o método?
anderson.bonavides
O usuário que eu pesquiso é o mesmo que eu insiro.
pablofaria
tenta manter a mesma transação aberta para perquisar no instante do merge…
Cabazzo
Vc deu um “find” antes? Pq isso acontece quando o EntityBean não está sendo “gerenciado” pelo EntityManger. isto é está desacoplado. Tente colocar um em.flush(); depois do merge.
anderson.bonavides
Oi pessoal obrigado pelas dicas. Na verdade percebi que não estava tendo id nenhum. O merge estava funcionando como um comit. Pessoal podem me indicar alguma outra solução?
E meio urgente.
Fico muito agradecido a vocês pela ajuda com minha duvida.
Obrigado.
publicvoideditarUsuario(Usuariousuario,Stringemail){EntityTransactiontransaction=manager.getTransaction();Usuarioaux;try{transaction.begin();Queryquery=manager.createQuery("SELECT u FROM Usuario u WHERE u.email = :email");query.setParameter("email",email);aux=(Usuario)query.getSingleResult();manager.merge(usuario);transaction.commit();}catch(Exceptione){transaction.rollback();System.err.println("Erro: "+e.getMessage());}finally{manager.close();}}
renatocustodio
De qualquer forma vc tem que fazer ela chegar aí com algum id!
Isso é algo web? Ta usando algum framework?
anderson.bonavides
É web e to fazendo no braço. Uso o Jboos Tools para fazer as tags do jsf.
marciocamurati
Para atualizar os dados desse usuário você fez um find e exibiu ele na tela para alterar os dados correto? Você só precisa manter alem dos campos input com os dados editáveis um com esse id um hidden por exemplo, e passar ele junto com os demais dados para sua camada de Business.
[]s
anderson.bonavides
Obrigado marcio vou procurar aki como se faz um hidem no jsf. Eu pessoalmente não sei.