Boa Tarde
Eu fiz um teste mapeando mais um item na classe movimentação para fazer 2 inserções. Porém ao fazer o select na tabela o que ocorreu é que foi feito um insert e um update.
Tentei até mesmo, após o commit do primeiro registro, realizar uma nova consulta da conta, mas não funcionou.
Entendo que são transações diferentes. Não deveria funcionar?
Obrigado.
package br.com.alura.jpa.testes;
import br.com.alura.jpa.modelo.Conta;
import br.com.alura.jpa.modelo.Movimentacao;
import br.com.alura.jpa.modelo.TipoMovimentacao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import java.math.BigDecimal;
import java.time.LocalDateTime;
public class TesteMovimentacao {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("contas");
EntityManager em = emf.createEntityManager();
Conta conta = em.find(Conta.class, 4L);
System.out.println("Conta nº: " + conta.getId() + " - " + conta.getTitular());
Movimentacao movimentacao = new Movimentacao();
movimentacao.setDataMovimentacao(LocalDateTime.now());
movimentacao.setDescricao("Churrascaria");
movimentacao.setTipoMovimentacao(TipoMovimentacao.ENTRADA);
movimentacao.setValor(new BigDecimal(240.0));
movimentacao.setConta(conta);
em.getTransaction().begin();
em.persist(movimentacao);
em.getTransaction().commit();
// Nova consulta na conta
em.find(Conta.class, 4L);
movimentacao.setDataMovimentacao(LocalDateTime.now());
movimentacao.setDescricao("Combustível");
movimentacao.setTipoMovimentacao(TipoMovimentacao.SAIDA);
movimentacao.setValor(new BigDecimal(1500.0));
movimentacao.setConta(conta);
em.getTransaction().begin();
em.persist(movimentacao);
em.getTransaction().commit();
em.close();
emf.close();
}
}