Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Após um merge posso fazer um setTitular?

Porque após o merge de uma classe detached o JPA não sincroniza um comando setTitular com o banco ? O objeto não se transformou em managed?

Abaixo o código de minha classe de teste:

package br.com.caelum.financas.teste;

import javax.persistence.EntityManager;

import br.com.caelum.financas.modelo.Conta;

import br.com.caelum.financas.util.JPAUtil;

public class TesteEstadosJPA {

public static void main(String[] args) {

Conta conta = new Conta();

conta.setId(11);

conta.setTitular("Joao da Silva2");

conta.setNumero("55555");

conta.setBanco("Bradesco");

conta.setAgencia("123456");

EntityManager manager = new JPAUtil().getEntityManager();

manager.getTransaction().begin();

manager.merge(conta);

System.out.println(">>>" + conta.getTitular());

conta.setTitular("Joao Pereira2");

System.out.println(">>>" + conta.getTitular());

manager.getTransaction().commit();

manager.close();

}

}

1 resposta
solução!

Oi Clence,

O merge te retorna um objeto no estado Managed então se você quiser fazer alguma operação com ele, deve armazenar este objeto na variável que queira manipular. Ex:

conta = manager.merge(conta);

Aqui você recuperou o objeto no estado managed e aí sim o setTitular vai funcionar.

OBS: Quando for inserir um código clique no botão <> INSERIR CÓDIGO que aparece acima da caixa de texto e coloque seu código onde está escrito insira seu código aqui.

Abraço!