Duplicando Objeto ao alterar

Meu problema é o seguinte, quando estou alterando a entidade que é formada de chaves compostas, meu objeto esta sendo dublicado e não alterado. Isso acontece somente quando altero o campo chave, os outros campos altera normamente.

Método do bean que altera a entidade:

public void edit(Contas contas, Pessoa pessoa) { em.merge(contas) }

Método do chamado na aplicação swing:

private void jbtAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                           
    //try{
        if(!VerificaFormularios.verificaCampoTextoNulo(jpnConta)){
        jlbMensagem.setText("");
        entidadeConta.setPessoa(((Pessoa) listPessoaEm.get(jcbEmpresa.getSelectedIndex()-1)) );
        entidadeConta.setLogradouroCodg(((Logradouro) listLogradouro.get(jcbLogradouro.getSelectedIndex()-1)) );
        entidadeConta.setTipoCodg(((TipoConta) listTipoConta.get(jcbTipo.getSelectedIndex()-1)) );
        entidadeConta.setUf((listUf.get(jcbUf.getSelectedIndex()-1)).getUf());
        entidadeConta.setAgencia(jtfAgencia.getText());
        entidadeConta.setBairro(jtfBairro.getText());
        entidadeConta.setCelular(jtfCelular.getText());
        entidadeConta.setCep(jtfCep.getText());
        entidadeConta.setCidade(jtfCidade.getText());
        entidadeConta.setConta(jtfConta.getText());
        entidadeConta.setDescEndereco(jtfEndereco.getText());
        entidadeConta.setDescricao(jtfDescricao.getText());
        entidadeConta.setTelefone(jtfTelefone.getText());
        entidadeConta.setFax(jtfFax.getText());
        entidadeConta.setGerente(jtfGerente.getText());
        entidadeConta.setNumero(jtfNumero.getText());
        entidadeConta.getContasPK().setPessoaCodg(((Pessoa) listPessoaEm.get(jcbEmpresa.getSelectedIndex()-1)).getCodigo());
        conta.edit(entidadeConta,(Pessoa) listPessoaEm.get(jcbEmpresa.getSelectedIndex()-1));
        mapaBotoes.put(jpnBotoes, "10111");
        Formatacampos.habilitaBotoes(jpnBotoes, (String)mapaBotoes.get(jpnBotoes));
        jlbMensagem.setText("Conta Alterada com Sucesso!");
     }
       }catch(RuntimeException rue){
           TrataErros.mostrarErro(rue.toString());
         }
}

Bom se você alterar o id do uma entidade ela passa a ser outra. Você não pode alterar o campo chave quenesse caso ele é de uma chave composta.

Se for realmente necessário fazer isso, apage o objeto anterior e crie um novo.