O código acima tem funcionado nos meus testes, mas não tenho muita certeza se funciona para todos os casos. Estou estudando o exato comportamento do merge.
Como objeto que o método recebe como parametro está sempre desligado do contexto de persistência e com o identificador definido, entendo que o merge faz o update.
Está me parecendo que o merge() é bom de ser utilizado em situações específicas, não em um método update genérico.
Andre_Brito
Para quais casos não funcionaria?
Acho que foi na documentação do Hibernate que o merge é o novo saveOrUpdate. Esses dias tentei usar o saveOrUpdate e nem consegui usar o ‘bind’ do teclado no Eclipse
V
Vicento_Corleone
Andre,
Havia criado o merge em um método update. Entretanto, pelo que estou entendendo, ele só funciona como update se:
-> Estiver o objeto estiver desacoplado do contexto de persistência E
-> Possuir um identificador único.
O merge(), embora possa ter um comportamento parecido com o saveOrUpdate() do Hibernate, não é exatamente igual. O ultimo artigo que passei no post anterior fala exatamente destas diferenças. E o outro mostra o comportamento do merge() em situações diversas.