Problema ao editar usando o objeto.merge

Olá boa tarde,

Estou com um problema galera.

Tento editar um usuário e salvar as alterações, porém ao invés de editar, o sistemas cria um novo.
OBS: Estou usando o merge.


public void salvar(Entidade entidade) {
        try {
            EntityManager em = JPAUtil.getEntityManager();
            em.getTransaction().begin();
            em.merge(entidade);
            em.getTransaction().commit();
            em.close();
        } catch (RuntimeException erro) {
            Messages.addGlobalError("Ocorreu um erro ao tentar salvar o novo usuário");
            erro.printStackTrace();
        }
    }

p:commandButton value="Salvar" action="#{usuarioMB.salvar}" oncomplete="PF('dialogo').hide();" update=":formPrincipal:messages :formPrincipal:fieldsetPessoas :formPrincipal:dataTable"


public void editar(ActionEvent evento){
    usuario = (Usuario) evento.getComponent().getAttributes().get("objetoSelecionado");
}

O que vocês acham??

Olá, verifique se este objeto está indo com o código dele e se a classe desse objeto implemente o equals pelo código.

Esta sim amigo, coloquei um System.out.println(usuario.getcodigo()) no metodo editar do UsuarioMB e ele printou o codigo certinho no console.

Mas por algum motivo quando tento salvar ao invés dele atualizar o que ja existe ele apenas acrescenta um novo.

Amigo consegui resolver.

Funcionou quando eu declarei meu UsuarioMB como View Scoped.

@ManagedBean
@ViewScoped
public class UsuarioMB{

}