JPA....DUvida referente ao comando MErge

2 respostas
P

olá,

qual a diferença de find e merge nessa caso abaixo ???

abs

public boolean alterarCadastro(PessoaFisica pessoaFisica)   
    {   
           
        factory = Persistence.createEntityManagerFactory("banco");   
        manager = factory.createEntityManager();   
           
        EntityTransaction tx = manager.getTransaction();   
        tx.begin();   
        try   
        {   
            pessoaFisica = manager.merge(pessoaFisica);   
               
            manager.persist(pessoaFisica);   
            manager.flush();   
            manager.clear();   
            tx.commit();   
           
        }   
        catch (RuntimeException e)   
        {   
            tx.rollback();   
            JOptionPane.showMessageDialog(null, e, "Erro!", 0);   
               
            manager.close();   
            factory.close();   
               
            return false;   
        }   
        manager.close();   
        factory.close();   
        return true;   
    }

2 Respostas

hudson.negao

cara posso estar falando besteira, não sou um expert em jpa, porém vou tentar ajudar
o comando merge, atualiza o objeto e retorna ele atualizado, o comando find somente faz a busca pelo que eu entendo.
espero ter ajudado. você pode dar uma olhadinha no livro java persistence with hibernate que fala do hibernate annotations, ou no prórpio site do
hibernate para se informar melhor.

snayfray

Bom acredito que você esta fazendo alteração de uma pessoaFisica que ja existe!!

portanto isso compila??

manager.persist(pessoaFisica);

pelo conceito que tenho sobre JPA, quando você tem um objeto e quer alterá-lo você não consergue dar persist nele e sim o merge!!

Caso esteja falando besteiras, desculpe… sou um aprendiz de JPA ainda!!

Acredito que vc tomaria a seguinte exception!!

PersistentObjectException… detached entity passed to persist…

Criado 3 de dezembro de 2008
Ultima resposta 3 de dez. de 2008
Respostas 2
Participantes 3